Dinámica Poblacional

El estudio de la Dinámica Poblacional tiene como objetivo desarrollar conocimiento los patrones y processos intra-especifica y entre-especies. Tradicionalmente muchos de los trabajos de dinamica poblacional se enfocarón en los estudios intra-especifica, fomentando una perpestiva que las especies no enteractuan con su ambiente biotico.

Objetivo del libro:

Este libro digital

¿Qué es el analisis de dinamica poblacional?

Por: Por RLT, Nhora Ospina, Demetria y Anne …..

El objetivo de la conservación biológica es asegurar que las especies pueden sobrevivir, reproducirse y dejar progenie viable para de una generación a otra. Por consecuencia se necesita que las variables intrinsicas y extrinsicas, bioticas y abioticas de cada especies estén considerado con todas sus interacciones. Naturalmente aunque el concepto es sencillo, tomar en cuanta TODAS las posibles interacciones biológicas y abióticas es imposible.
El primer paso a la conservación es considerar el ambiente adecuado para cada especie. Sin duda en los ultimos 50 años en muchos paises ha habido un cambio grande en el repesto y la conservaciones de bosque, pradera, desierto y todos los biomas en general. Por ejemplo el cambio de cobertura de bosque en Puerto Rico ha aumentado de circa de 2-5% en los años 1910 a más 40% en el 2000 (Parés-Ramos, Gould, and Aide 2008). En general en Latino América ha habido más reforestación de deforestación (Aide et al. 2013) en los ultimos años, aunque varia mucho entre paises y periodo de tiempo. Para la conservación el primer paso era reconocer que los habitat necesitan ser protegido.
Muchos de estos nuevos hábitat son bosque segundarios, fragmentados y dominado por especies introducidas. Estos habitat por consecuencia son mayormente diferentes al ambiente natural antes de los cambios antropogénicos. El resultado, en muchas ocasiones, es que la especies de interes están reducida en números de individuos o fragmentados. Considerando esos remanentes de individuos en el habitat, son suficiente para mantener una población viable? ¿Como que uno decide que una población es viable?

En general, el conceptos de conservación es que si uno proteje los habitat las especies estarán conservadas. Pero lo que no es obvio es que la presencia de muchos individuos no es suficiente para asegurar la supervivencia de una especies a largo tiempo. Un ejemplo bien conocida es la extincción del Dodo en la isla de Mauritius y la casi extinción de una especies de arbol en la familia Sapotaceae, Calvaria major. Para que la semillas sean viable necesitan pasar por el tracto digestivo de un pajaro para remover el encocarpo persitente de la semilla que causa “dormancy” en las semillas (Temple 1977). Por consecuencia nunca se puede asumir que la presencia de una especies sin tomar en cuenta las interacciones bióticas y abióticas es suficiente para sugerir que no hay riesgo de extincción.

¿Qué es el estudio de la dinamica poblacional?

La dinámica poblacional tiene como meta tomar en cuenta todas las etapas/edades de una especies y evaluar cual de esas etapas/edades tiene impacto sobre la supervivencia de la especies. Esas etapas de vida debería considerar las interaciones con sus ambiente biotico y abiotico. La dinamica de población es fundamental en todas las areas de la ecología y evolución. Comprender la dinamica poblacional es la clave para entender la importancia relativa al aceso de los recursos y el efecto de competencia, herbivoria y depredaciones sobre la viablidad de especies. Tradicionalmente los estudios estaban enfocado a evaluar la tabla de vida para el manejo y conservaciones de especies particulares (ref). En años más recientes los estudios se han diversificado para evaluar la interacciones entre especies y su ambiente (ref).

Definición

Una definición más especifica de los estudios de dinámica poblacional son definidos como los análisis de los factores que afecten el crecimiento, estabilidad y reducción en el tamaño de la población en una serie de tiempo.

Por ejemplo, la dinamica poblacional de especies invasivas incluye un periodo de crecimiento muy lento al comienzo de la colonización de un nuevo sitio y frecuentamente siguido de un crecimiento logarithmico. La figura @ref(fig:Pop-fig). demuestra el cambio de número de individuos en el tiempo de una especie hipotética.

ggplot(pressure, aes(temperature, pressure))+
  geom_point()+
  rlt_theme+
  xlab("Tiempo")+
  ylab("Tamaño poblacional")
Cambio poblacional en tiempo

Cambio poblacional en tiempo

El analisis de Dinámica Poblacional y su uso

Determinar el tamaño poblacional en el futuro tiene muchos usos. Se puede dividir sus usos en tres grupos grandes, entender las 1) interacciones ecológicas, 2) manejo y conservaciones o 3) los procesos evolutivos. Los estudios enfocado a la conservación se engloba dentro de un acercamiento de la viablidad de poblaciones. En este libro estaremos dando una introducción a cada uno de estas vertientes, pero nuestros ejemplos son una introducción al tema y no una profundización extensa de cada uno. En la table @ref(USO) vemos algunos de los usos especificos que se ha dado con la metodología de PPM.

Tabla: El uso potencial de la diferentes acercamiento de PPM.

NOTA IMPORTANTE: Evaluar las referencias y añadir referencias tradicionales y recientes

Categoria de Uso Uso especifico Referencias Referencias con Oquideas
Manejo Identificar las etapas or procesos demograficos claves (Crouse, Crowder, and Caswell 1987) ?
Determinar cuantos individuos en una población es necesario para reducir la extinción Shaffer 1981 Armbruster & Lande 1993 ?
Determinar cuantos individuos se necesita introducir en una sitio para establecer una población viable Bustamante 1996 ?
Determinar cuantos individuos se puede extraer si tener un impacto negativo sobre la viabilidad de una población Nantel et al. 1996 ?
En especies invasivas determinar cuantos y cual etapas se necesita remover para controlar la población ? ?
Determinar cuantas pobalciones se necesita para la viabilidad de una especie al nivel local o global Lindenmayer & Possingham 1996
Evaluación de riesgos Evaluar el riesgo de una población Samson 1985 muchos
Comparando el riesgo relativo de dos o más poblaciones Allendrof et al. 1997 ?
Interacciones ecologicas Evaluar interacciones ecológicas para entender las variables importantes para la supervivencia de una población ? Ospina et al., 2022
Procesos y patrones evolutivos Cual de los procesos y patrones evolutivos del ciclo de vida de especies impacta su crecimiento ? ?

USO 1: Identificar las etapas or procesos demográficos claves

Identificar y conocer cuales son las etapas de vida más suceptibles a cambios abioticos y bioticos y su impacto sobre la persistencia de una población es necesario para el manejo. El ejemplo clásico en la literatura usando PPM son los trabajos sobre la dinámica poblacional de la tortuga “boba” o “cabezona” Caretta caretta (Crouse, Crowder, and Caswell 1987), (Crowder et al. 1994). Crouse y Crowder demostrarón que aun salvando TODOS los huevos de depredación, esa estrategia de manejo antropogenico iba a tener muy poco impacto en el crecimiento de la población. Lo que econtrarón es que el impacto más grande sobre el crecimiento poblacional provendría de proteger los adultos de las redes de pesca, modificando estas para que las tortugas se pueden escapar y no ahogarse en las redes. Los trabajos de Crouse y Crowder fueron pioneros en demostrar que uno podía simular diferentes escenarios basado en la historia de vida y evaluar su impacto.

Ejemplo de orquidea AQUI

USO 2: Determinar cuantos individuos en una población es necesario para reducir la extinción

El efecto de tamaño poblacional sobre la biología y la probabilidad de extincción es amplia (Shaffer and Samson 1985), (Nunney and Campbell 1993), (Harris et al. 2022). ¿Cual es la probablidad de extincción de una población considerando la cantidad de individuos en cada etapa? En general lo que se observa es que menor el tamaño poblacional, N, mayor es el riesgo de extincción. Esa probabilidad de extincción puede variar si algunas etapas del ciclo de vida tiene es muy reducido o su probabilidad de sobrevivir o crecer varia. Consideramos por ejemplo en las orquídeas donde la probabilidad de que las semillas se establece, germina y crezca a a ser un juvenil es muy pequeña. Por consecuencia una nueva población de orquidea necesita considerar la cantidad de individuos que este presente pero tambien la probabilidad de tener semillas y que estas pueden crecer a ser adultos reproducible.

USO 3: Determinar cuantos individuos se necesita introducir en una sitio para establecer una población viable

Naturalmente, más cantidad de individuos re-introducido en un sitio mayor sera la probabilidad que la población sea viable. Pero, como todo hay un limite de tiempo y esfuerzo disponible. Por consecuencia la pregunta debería ser orientado a determinar cual es el minimo de individuos que se deberia introductir para garantizar un x porciento de suceso en el establecimiento de una nueva población.

En los ultimos años, muchas organizaciones y cientificos han comenzado a hacer re-introducción de especies en su habitat nativo y no. (ref). Algunos programa introduce especies en areas urbanas.

  • Caladenia
  • Korea
  • one million orchids project
  • ????

USO 4: Determinar cuantos individuos se puede extraer sin tener un impacto negativo sobre la viabilidad de una población

Hay tres razones principales para la extracción de individuos de su ambiente natural.

  1. Obtener individuos para la conservación Ex Situ.
  2. Usar un grupo de individuos para su propagación.
  3. Extraccíon para la venta sin objetivo de conservación.

El supuesto de colectores de orquidea de su habitat naturales, tanto para la conservación de Ex situ y el uso para la propagación es que el impacto es minimo, y no tendrá impacto a largo plazo para la supervivencia. Regresaremos sobre este punto más tarde. La historia de fanatisismo de recolección de orquideas para la venta es bien conocida ref(). Aun que uno quisiera pensar que estas extracciones son del pasado y no occuren hoy en dia, hay todavia escrupulos que extraen los plantas sin pensar al impacto que tendrá sobre la población o especie.

Pero la pregunta se tiene que hacer. Cuantos individuos y de que etapas se puede extraer de la población sin tener impacto en el crecimoento poblacional?

USO 5: En especies invasivas determinar cuantos y cual etapas se necesita remover para controlar la población.

USO 6: Evaluar el riesgo de una población

USO 7: Determinar cuantas poblaciones se necesita para la viabilidad de una especie al nivel local o global

Dinamica de metapoblaciones.

USO 8: Comparando el riesgo relativo de dos o más poblaciones

USO 9: Evaluar interacciones ecológicas para entender las variables importantes para la supervivencia de una población

USO 10: Cual de los procesos y patrones evolutivos del ciclo de vida de especies impacta su crecimiento

Historia de dinamica poblacional en orquideas.

Referencias

Qué es un diagrama de Ciclo de Vida

Por: Nhora Ospina

Ejemplos de ciclos de Vida

Escribo algo

Ejemplos de un ciclo de vida sencillo

Tengo mucho texto que ampliar

Ejemplo de un ciclo de vida con 3 estadios

library(Rage)
# hidden code to produce figures
library(DiagrammeR)
matA <- rbind(
  c(0.0, 0.0, 3.2),
  c(0.5, 0.3, 0.8),
  c(0.0, 0.4, 0.9)
)
stages <- c("seedling", "rosette", "flowering")
title <- NULL
graph <- expand.grid(to = stages, from = stages)
graph$trans <- round(c(matA), 3)
graph <- graph[graph$trans > 0, ]
nodes <- paste(paste0("'", stages, "'"), collapse = "; ")
graph$min_len <- (as.numeric(graph$to) - as.numeric(graph$from)) * 3
graph$col <- c(
  "PaleGreen4", "PaleGreen4", "PaleGreen4", "Goldenrod1",
  "MediumOrchid4", "PaleGreen4"
)
edges <- paste0("'", graph$from, "'", " -> ", "'", graph$to, "'",
  "[minlen=", graph$min_len,
  ",fontsize=", 10,
  ",color=", graph$col,
  ",xlabel=", paste("\"", graph$trans),
  "\"]\n",
  collapse = ""
)
grViz(
  paste(
    "
digraph {
  {
    graph[overlap=false];
    rank=same;
    node [shape=", "egg", ", fontsize=", 12, "];",
    nodes, "
  }",
    "ordering=out
  x [style=invis]
  x -> {", nodes, "} [style=invis]", edges,
    "labelloc=\"t\";
  label=\"", title, "\"
}"
  )
)

Ejemplo de un cicle de vida con estadio de latencia

plot_life_cycle(matA, stages=stages, fontsize = 0)

Code for color coding figure

http://rich-iannone.github.io/DiagrammeR/

Ejemplo de un cicle de vida con estadio de post reproducción

Ejemplo de un cicle de vida incompleto (y biologicamente erroneos)

Referencias

Como recopilar datos en el campo

Por: Raymond L. Tremblay y Aucencia

Identificar la especie de estudio

Para cualquier studio usando el acercamiento de dinamica poblacional es necesario conocer lo básico de la especie de interes y las etapas/edades que corresponde al ciclo de vida de esa misma. Poder reconocer las semillas, plántulas, juveniles y adultos y si hay etapas latentes. Algunos retos en en el estudio de las orquideas es el siguimiento de las semillas y plántulas en el campo. La dispersión de las semillas en espacio ha sido estudiado muy poco ( Sabat. et al. ) debido a sus tamaños tan pequeños y dificultad de seguir en el espacio. Los métodos de seguir las semillas en su ambiente natural incluye tipicamente ponerlos en una malla y ponerlos en el suelo o la corteza y recogerlos más tarde para ver si estas germinaron (ref).

Identificar plántulas en orquídeas terrestres tiende también a ser muy complidado, ya que están escondidas entre vegetación o cubierta de tierra. La orquideas epitifas, en ciertas especies se puede identificar las plántulas (si no están cubierta de musgo o otra vegetación), pero distinguir entre plántuls de diferentes especies puede ser imposible. Por ejemplo distinguir las plántulas de diferentes especies de Lepanthes en el mismo forofito no es posible (Tremblay comunicación personal). El método de identificar a que especie pertenece fue de seguir estos individuos a las otras etapas (junenil o adulto). Por ejemplo la forma de crecimiento del tallo es diferente entre Lepanthes eltoroensis (prostate) versus Lepanthes woodburyana (erect). Por consecuencia idividuos que no sobreviven a la próxima etapa no se sabe a que especie pertenece.

Marcar los individuos en el campo

Los calidad de los métodos de marcar plantas en el campo para evaluación posterior es primordial para los análisis de dinámica poblacional. Como se marca y cual es la calidad del marcador para detectar y re-evaluar los individuos en años subsiguiente afecta la calidad de los datos. Si los marcadores individuales se pierden y no se reconoce ese problema, los individuos perdidos por marca no permanente se podría categorizar como muerto, y ese individuo no marcado (por haber perdido su identificación) pudiese ser interpretado como un nuevo individuo (reclutamiento). Eso resulta en aumento en mortandad y reclutamiento, sesgando los resultados. Naturalmente, ese sesgo depende de la frecuencia proporcional al tamaño de muestra, menor el tamaño de muestra mayor el sesgo.

El marcados tiene que ser permanente (plástico, metal, etc.) y fácil de encontrar en adición de ser informativo y único para cada planta y reducir las incertidumbres. La dificultad muchas veces proviene de individuos donde los datos son recopilados con numeración similares. Esos problemas muchas veces encuentra años después cuando se quiere re-evaluar los datos y no hay manera aclarar las dudas.

Métodos de marca y recaptura

Indentificaciones de individuos

Cada planta tiene que tener si propia identificación y que no haya confusión con otros individuos de esa misma población o de otra población.

Una población

Por ejemplo si el estudio comenzó en 2023 y solamente hay una población. Los individuos podrían tener una codificación siguiente 23001, 23002, 23003, … 23152 para los 152 individuos encontrado y marcado ese año. El siguiente año se muestra esos individuos y nuevos individuos encontrado comenzarían con 24153. De esta forma ya se conoce cuando fue el primer año de muestreo del individuo y esos nuevos individuos no se confunde con los del año anterior. Cada año comenzaría con identificación del año, y la numeración de los individuos no se repiten en la misma población. Entonces hay redundandia en la codificación ayudando a reducir los errores de codificaciones.

Multiples poblaciones

Siguiendo con el mismo concepto pero múltiples poblaciones, la numeración de la población pudiese utilizar una codificación alfa numérica, donde la letra del alfabeto representa la población y la número los individuos. Siguiera así A23001, A23002,…, 23xxx para la primera población y B23001, B23002,…, B23xxx para las segunda población.

Relocalización de individuos

Para relocalizar los individuos se puede utilizar marcador permanentes o geo-referencias individuales para cada planta.

Métodos de relocalizar los individuos en el campo puede ser complicado.

  • uno de los métodos es amarar al individuo la identificación individual de forma que se fácil de encontrar y que no se pierde. Por ejemplo uno puede amarar el “tag” con hilo de pezcar grueso o “twist tags” alrededor de unos pseudobulbos o cerca de la planta. El la foto que sigue vemos una planta Cypripedium acaule en la región de North Bay, Ontario, Canada marcado con un tag metálico cerca de la planta
Cypripedium acaule marcado; Foto: Tremblay
Cypripedium acaule marcado; Foto: Tremblay

Necesitamos unos ejemplos

  • otro metodo es grapar el “tag” al lado de los individuos. Este es un método que es adecuado para plantas pequeñas. NO se debería poner el tag agarrado a la planta, ya que el peso del tag, podría causar daño a la planta, en adición que este caso las hojas no son persistente, por consecuencia al caer una hoja podría perder el “tag”. En esa foto se uso un pequeño clavo para poner el “tag”, pero también usando una grapadora puede ser más eficiente y menos dañino al árbol. En la foto siguiente se ve un tag de plastico amarado con un clavo al lado de de una planta de Lepanthes eltoroensis en Puerto Rico. Posteriormente se cambio el calvo por una grapadora normal. Ese metodofuncionó muy bien.
Lepanthes eltoroensis marcado; Foto: Tremblay
Lepanthes eltoroensis marcado; Foto: Tremblay

Si el sitio esta bien protegido y no hay riesgos de atraer atención a las plantas se puede usar pequeñas banderas para facilitar la recaptura de las plantas.

NOTA importante: los “tags” no deberían ser facil de ver en el habitat ya que podría atraer atención al estudio y hay mucha gente que se llevan plantas del campo, incluyendo plantas que son partes de estudios.

Cypripedium acaule identificado con bandera numerada; Foto: Tremblay
Cypripedium acaule identificado con bandera numerada; Foto: Tremblay

Variables a recoger en el campo

La base de los estudios de dinamica poblacional es evaluar las transiciones entre las etapas de vida incluyendo mortantad y su reprodución. La información que se recoge del campo tiene que ser facil de recoger y consistente y sin error. Si seguimos ejemplos de los trabajos de campo de Tremblay [ref] con Lepanthes, las etapas incluidas son plantulas, juveniles, adultos no reproductivos y adultos reproductivos. Cada una de estas estapas estan definida especificamente para ese genero.

  • plantula: individuo que no tiene ninguna hoja con peciolo.
  • juvenil: individuo que tiene hojas con peciolo pero no hay ninguna evidencia que fue reproductiva en el pasado (las base de las inflorescencia son persistente)
  • adulto non-reproductivo: individuos con inflorescencias secas (ninguna verde)
  • adulto reproductivo: individuo con inflorescencia verdes con o sin flores o frutos.

Dependiendo de los estudios pudiese haber más etapas, por ejemplo Tremblay [ ] uso dos etapas de individuos reproductivos.

Otro ejemplo es el estudio de Hernández-Apolinar con la especie xx. donde incluyo…..

Determinar cuantas categoria deberia ser utilizados y cuales es muy dinamica y depende de la especies, número individuos y las preguntas de interes.

Las variables a recoger tiene que incluir el minimo las siguientes

  • la etapa en el tiempo t
  • si esta vivo o muerto en el tiempo t
  • la cantidad de flores en el tiempo t
  • la cantidad de frutos en el tiempo t
  • la presencia y “tagging” de nuevos individuos en el tiempo t+1

Otras variables que pudiese recoger incluye

  • el tamaño de las hojas o la hoja más grande

    • Brasavola cucculata []: las plantas necesitan un tamaño minimo de largo de hoja antes de florecer
  • el número de pseudobulbo

    • ….
  • la altura de la inflorescencia

    • Caladenia valida []: la altura de la inflorescencia impacta la probabilidad de producir frutos
  • la altura en el árbol de las epífitas

    • Brasavola cucculata []: la plantas muy bajo menos de 1.5m son depredadas por la cabras
  • el número de “ramet”, un indice del tamaño del genotipo en plantas con crecimiento horizontal

    • Cypripedium calceolus var. parviflorum [Tremblay]: Los estudios evolutivos tienen que reconocer la diferencia entre un “ramet” y un “genet”.
  • indicadores de herbivoria sobre la planta

  • indicadores de la cantidad plagas sobre la planta como “rust”

Referencias

Como calcular transiciones para la matriz de Lefkovitch

Por: Ernesto Mujica y Elaine Gonzalez y Aucencia

Métodos tradicional de calcular las transiciones

Problema con el uso tradicional

Referencias

Como calcular fecundidad

Por: Demetria y Aucencia: equipo ECOSUR

Métodos tradicional de calcular las transiciones

Problema con el uso tradicional

Referencias

Matrices de transicion, fecundidad y clonal

Por: Raymond

Tres tipos de matrices

Para facilitar los analisis y interpretaciones es necesario tener claro la diferencias en los parámetros que provienen de transiciones, fecundidades y clonaje, cada submatriz se suma para tener un modelo de una matriz poblacional. La suma de cada una de esas sub-matrices resulta en la matriz de transiciones para evaluar algunos de los parametros del crecimiento poblacional.

Definiciones de las matrices

  • MatU = Matriz de transiciones
  • MatF = Matriz de Fecundidad
  • MatC = Matriz de clonaje
  • MatA = MatU + MatF + MatC
Relación entre matrices; Diseño: Samuel Gascoigne
Relación entre matrices; Diseño: Samuel Gascoigne

MatU: Matriz de transiciones

En la matriz de transiciones, MatU se encuentra solamente la información sobre de transiciones, estasis o retroceso entre las etapas de vida. Por consecuencia todo información sobre reproducción y clonaje es excluida. Si el diseño del modelo asume tres etapas de vida, plantulas, juvenil y adultos, se incluye solamente las siguientes transiciones.

Nota que es este modelo los juveniles no pueden regresar a ser plantulas, pero los adultos pudiese regresar a ser juvenil. Seria probablemente más adecuado re-nombrar la etapa juvenil (que se entiende que no es reproductivo) a algo más claro como “Individuos pequeño”.

library(DiagrammeR)
library(Rage)
matU <- rbind(
  c(0.1, 0.0, 0.0),
  c(0.5, 0.3, 0.05),
  c(0.001, 0.4, 0.8)
)
stages <- c("Plantulas", "Juvenil", "Adulto")
plot_life_cycle(matU, stages=stages)

MatF: Matriz de fecundidad

Si uno sigue la figura anterior vemos que los individuos en la segunda etapa se reproducen sexualmente (producen plantulas). Por consequencia seria probablemente más adecuado cambiar de nombre para la segunda etapa de “juvenil” a “individuos pequeños”. Lo que se observa es el ciclo de vida de la oportaciones de plantulas es que los Individuos pequeños y Grande producen plantulas.

library(DiagrammeR)
library(Rage)
matF <- rbind(
  c(0.0, 0.4, 1.8),
  c(0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0)
)
stages <- c("Plantulas", "Ind Pequeños", "Ind Grande")
plot_life_cycle(matF, stages=stages)

MatC = Matriz de clonación

Esa matriz representa la información para especies que se reproducen por clonaje. Nota que este necesario lo que se define por clonaje. Por ejemplo un individuo de Epidendrum que crece y que tenga más tallos, no debería ser considerado clonaje, pero crecimiento del individuo. Al contrario un individuo que crece de forma que la planta madre se separa en dos o más partes donde no comparten connección pudiese ser considerado clonaje. Otra alternativa es que hay muchas especies de orquideas que producen keiki, el momento que estos se separan de la madre se puden considerar como un individuo a parte.

Se deberia enfatizar que añadir el concepto de clonaje dentro de la matriz de transiones resulta en estimados de parametros diferentes, tal como el tamaño efectivo de población, Ne, en adición de evaluar otros conceptos evolutivos. En estudios evolutivos no es el individuo como tal que es la unidad de interes pero el individuo como fuente de diversidad genética, por consecuencia individuos (clones) que son geneticamente igual son evolutivamente el mismo individuos aunque esten seperado fisicamente. Las poblaciones organizados en clones affecta la interpretacion de datos tanto en los estudios ecologico y evolutivos Cook (1983). Cuando se estudia especies con clonación hay que diferenciar entre los que es el “ramet” y un “genet”. Los genet son la suma de todas las partes “ramet” que tiene la misma genetica. Los “ramet”, son las partes de individuales. En orquídea se podría considerar cada seudobulbo como un ramet y la suma de todos los seudobulbo como el “genet”. Hay acercamiento para tomar en cuenta la adequación de los “individuos” en la matriz y por consequencia intergrar el concepto de clonación en los estimados. vea: McGraw and Caswell (1996).

Método bayesiano de calcular las transciones

Por: RLT

El objetivo de este capítulo es demostrar algunos de los retos cuando uno trabaja con especies raras o con poca información para estimar los parametros de la matrices y como se puede resolver y estimar parametros más realista.

Considera este primer ejemplo donde se estima que la especie de interes tenga tres etapas en su ciclo de vida (semillas, plantulas y adultos) y que solamente la etapa más grande (de adultez) puede producir semillas.

Cuando se comienza un analisis de dinamica poblacional el primer paso es evaluar y tratar de ver cual son las etapas del ciclo de vida que pudiesen ser representativo de la dinamica principal de la especie.

En esta primera figura vemos lo que se considerá que ocurre en esa especie hipotetica.

library(Rage)

Ahora ud recoge los datos del campo y evalua las transiciones y fecundidad y tiene información siguiente.

  1. Todas las semilla germinan y crece a la etapa de plantula.
  • Es realista que todas las semillas germinan?
  • Por que no se encontró semillas que NO germinan?
  1. Todos las plantulas mueren
    • Es realista que todas las plantulas se muere?

Aqui se ve dos de los problemas que resulta en PPM que no son realista, uno que no hay ninguna mortantad o que todo se muere. El otro componente es el efecto del tamaño de muestra, considerá que su especie de interes Ud tuvo acceso solamente a 4 plantas adultas (un especies rara), y 4 de los 4 sobrevieron, por consecuencia 100% de supervivencia. Si los individuos llegan a esta etapa son inmortales!!!? Claramente es un resultado del tamaño de muestra y no del ciclo de vida de la especie.

El paquete raretrans ayuda en resolver estos asuntos illogicos y crear matrices que son más entre realistas al ciclo de vida de su especie.

# hidden code to produce figures
library(DiagrammeR)


matA <- rbind(
  c(0.0, 0.0, 0.0),
  c(1.0, 0.0, 0.0),
  c(0.0, 0.0, 0.9)
)
stages <- c("semillas", "plantulas", "adultos")
title <- NULL
plot_life_cycle(matA, stages=stages)

El paquete “raretrans”

La información original del uso del paquete se encuentra aqui https://doi.org/10.1016/j.ecolmodel.2021.109526.

Population projections from holey matrices: Using prior information to estimate rare transition events

Abstracto

Las matrices de proyección de población son un medio común para predecir la persistencia de la población a corto y largo plazo para especies raras, amenazadas y en peligro de extinción. Los datos de tales especies pueden sufrir de tamaños de muestra pequeños y, en consecuencia, perder eventos demográficos raros que dan como resultado trayectorias de ciclo de vida incompletas o biológicamente poco realistas. Las matrices con valores faltantes (ceros; p. ej., sin observación de semillas que se transforman en plántulas) a menudo se reparan utilizando información previa de la literatura, otras poblaciones, períodos de tiempo, otras especies, estimaciones de las mejores conjeturas o, a veces, incluso se ignoran. Para paliar este problema, proponemos usar un modelo multinomial de Dirichlet para parametrizar transiciones y un Gamma para la reproducción para parchear los valores faltantes en estas matrices perforadas. Esto integra formalmente la información previa dentro de un marco bayesiano e incluye explícitamente el peso de la información previa en las distribuciones posteriores. Mostramos utilizando dos conjuntos de datos reales que el peso asignado a la información anterior influye principalmente en la dispersión de los posteriores, la inclusión de anteriores da como resultado matrices irreducibles y ergódicas, y se pueden hacer inferencias biológicamente más realistas sobre las probabilidades de transición. Debido a que los antecedentes se establecen explícitamente, los resultados son reproducibles y se pueden volver a evaluar si hay antecedentes alternativos disponibles en el futuro.

Instalación de los paquetes #1

if (!require("pacman")) install.packages("pacman")
## Loading required package: pacman
pacman::p_load(janitor, tidyverse, devtools)

library(tidyverse)
library(janitor)

Instalación de raretrans #2

#library(devtools)

#devtools::install_github("atyre2/raretrans", build = TRUE, build_opts = c("--no-resave-data", "--no-manual"))

library(raretrans)

Vea el siguiente website para más información en ingles, la información que sigue es una traducción y ampliación de la información en el siuiente enlace.

https://atyre2.github.io/raretrans/articles/onepopperiod.html

library(tidyverse)
library(ggplot2)
library(popbio) # para la función projection.matrix()
library(raretrans)
# Mi tema de ggplot2 personal
rlt_theme <- theme(axis.title.y = element_text(colour="grey20",size=15,face="bold"),
        axis.text.x = element_text(colour="grey20",size=15, face="bold"),
        axis.text.y = element_text(colour="grey20",size=15,face="bold"),  
        axis.title.x = element_text(colour="grey20",size=15,face="bold"))

El objetivo de esta viñeta es demostrar el uso del paquete raretrans para los calculos de los parametros en una población y periodo de transición.

Parte I: Obtención de la matriz de proyección

raretrans asume que la matriz de proyección es una lista de dos matrices, una matriz de transición y una matriz de fertilidad. Este es el formato de salida de popbio::projection.matrix. Si tenemos transiciones individuales en un marco de datos

Podemos utilizar popbio::projection.matrix para obtener los datos necesarios. Hacemos una demostración con los datos de transición y fertilidad de la orquídea epifita Lepanthes elto POPNUM 250 en el periodo 5.

Paso 1: Cargar y fusionar los datos de población única para L. elto

data("L_elto") # carga el conjunto de datos `L_elto` en memoria (incluido en el paquete `raretrans`)
head(L_elto) 
## # A tibble: 6 × 13
##   POPNUM  year seedlings adults fertility IND_NUM stage next_stage first_year
##    <dbl> <dbl>     <dbl>  <dbl>     <dbl>   <dbl> <chr> <chr>           <dbl>
## 1    209     1         1      6         0      67 j     j                   1
## 2    209     1         1      6         0      68 a     a                   1
## 3    209     1         1      6         0      69 a     a                   1
## 4    209     1         1      6         0      70 a     a                   1
## 5    209     1         1      6         0      71 j     a                   1
## 6    209     1         1      6         0      72 a     a                   1
## # ℹ 4 more variables: last_year <dbl>, recruited <lgl>, died <dbl>,
## #   lifespan <int>

Organización de los datos en el “data.frame”

  • el primer paso es seleccionar los datos de una población y un periodo de tiempo
  • el segundo paso es hacer un cambio en la terminología para el estado más pequeño de “plantula” a “seedling”… Ese cambio es para que la información presentada aqui sea la misma que en el documento en ingles.

Cada fila de este data.frame de datos tiene columnas para la fase actual (stage), la fase siguiente (next_stage) y la fertilidad por individuo. Tenga en cuenta que “p” significa “plantula” en español. El primer conjunto de líneas de abajo cambia el nombre de la etapa del ciclo vital de “p” a “s” después de seleccionar la población y el periodo de tiempo.

onepop <- L_elto %>%   
# Filtrar la población # 250, el periodo (año=year) 5
  filter(POPNUM == 250, year == 5) %>% 
  # redefine "p" por plantula a "s" para seedling
  mutate(stage = case_when(stage == "p" ~ "s",
                           TRUE ~ stage),
         next_stage = case_when(next_stage == "p"~ "s",
                                TRUE ~ next_stage))
# popbio::projection.matrix no funciona con tibbles, por consecuencia se convierte en data.frame

head(onepop)
## # A tibble: 6 × 13
##   POPNUM  year seedlings adults fertility IND_NUM stage next_stage first_year
##    <dbl> <dbl>     <dbl>  <dbl>     <dbl>   <dbl> <chr> <chr>           <dbl>
## 1    250     5         8     34     0         167 j     a                   1
## 2    250     5         8     34     0         168 j     a                   1
## 3    250     5         8     34     0         169 j     a                   1
## 4    250     5         8     34     0.118     170 a     a                   1
## 5    250     5         8     34     0         172 j     j                   1
## 6    250     5         8     34     0         173 j     a                   1
## # ℹ 4 more variables: last_year <dbl>, recruited <lgl>, died <dbl>,
## #   lifespan <int>
# Crear TF = TRUE, añadir para formatear corectamente.
TF <- popbio::projection.matrix(as.data.frame(onepop), 
                        stage = stage, fate = next_stage, 
                        fertility="fertility", sort=c("s","j","a"), TF = TRUE)
TF # Este es la estructura de etapas de vida para esa población 
## $T
##    
##              s          j          a
##   s 0.09090909 0.00000000 0.00000000
##   j 0.63636364 0.57446809 0.00000000
##   a 0.00000000 0.29787234 0.85294118
## 
## $F
##    
##             s         j         a
##   s 0.0000000 0.0000000 0.1176471
##   j 0.0000000 0.0000000 0.0000000
##   a 0.0000000 0.0000000 0.0000000

Nota:

Nuestros estadios se codifican ahora como s (plántula), j (juvenil) y a (adulto), y ahora tenemos dos matrices: T (transición de estadios) y F (fecundidad). La tasa de crecimiento asintótico de la población observada es \(\lambda =\) 0.93. Las transiciones raras que faltan en nuestra primera matriz de transición, TF$T, son la transición de plántula (s) a adulto (a) y la transición de j a s. Pero sabemos que ocurren.

Paso 2: Obtener el número inicial de individuos por etapa

Dado que nuestras priores se basan en recuentos (número de individuos, N) y el tamaño de muestreo equivalente a priori se expresa como múltiplo del número de individuos observados, necesitamos obtener el número de individuos en cada etapa (\(N\)) en el primer periodo de tiempo.

Utilizamos la función raretrans::get_state_vector() para obtener el recuento inicial de individuos, N. inicial, N.

N <- get_state_vector(onepop, stage = stage, sort=c("s","j","a")) 
N # Un vector de # de individuos iniciales para cada etapa, nota que el "stage" son los individuos en el primer muestreo
## [1] 11 47 34

La lista de matrices y el vector de cuento de individuales no tienen por qué proceder de un data.frame como hemos hecho aquí. Mientras tengan el formato esperado, pueden crearse a mano. Usamos la población 231 en el periodo 2 como ejemplo, dividiendo la matriz en matrices de transición T y fecundidad F. Abajo, m significa “muerte”, es decir, plantas que están muertas.

TF2
## $Tmat
##     stage
## fate         p         j         a
##    p 0.5000000 0.0000000 0.0000000
##    j 0.0000000 0.8333333 0.0000000
##    a 0.0000000 0.0625000 0.8750000
## 
## $Fmat
##      [,1] [,2]  [,3]
## [1,]    0    0 0.125
## [2,]    0    0 0.000
## [3,]    0    0 0.000
N2
##  p  j  a 
##  2  6 16

En esta matriz falta la transición de plántula a juvenil, y ninguno de los 6 juveniles murió, lo que lleva a una sobreestimación de la supervivencia. La tasa de crecimiento asintótico de la población observada es \(\lambda =\) 0.88. La matriz no es ergódica (no se puede llegar a cualquier otro estado desde uno o más estados), y reducible, lo que significa que una o más columnas y filas se pueden descartar y tienen las mismas propiedades eigen.

Parte 2: Uso de priors para incorporar transiciones raras

Use priors no informativos

  • Ese paso es solamente para entender porque no se calcula y porque no se usa prior uniforme.

Tremblay (Tremblay et al. (2021)) muestran que los valores de prior de una dirichlet funciona para las columnas de la matriz de transición (T) y que valores prior gamma funciona para las columnas de la matriz de transición (F).

Matriz de transición

Por lo tanto, vamos a añadir un dirichlet uniforme con prior con un peso = \(1\) a la matriz de transición, \(T\). Aquí, tenemos 4 destinos (3 + muerte), por lo que cada destino 0,25 a la matriz de destinos observados (¡no a la matriz de transiciones!). de transición). Cuando especificamos una matriz con un prior para las transiciones, hay una fila más que columnas. Esta fila extra representa la muerte.

Tprior <- matrix(0.25, byrow = TRUE, ncol = 3, nrow=4)
fill_transitions(TF, N, P = Tprior) # resultado de la matriz de transición básica
##            [,1]        [,2]        [,3]
## [1,] 0.10416667 0.005208333 0.007142857
## [2,] 0.60416667 0.567708333 0.007142857
## [3,] 0.02083333 0.296875000 0.835714286
# Para entender las diferencias compara los resultados con *$T* del objeto *TF*
TF
## $T
##    
##              s          j          a
##   s 0.09090909 0.00000000 0.00000000
##   j 0.63636364 0.57446809 0.00000000
##   a 0.00000000 0.29787234 0.85294118
## 
## $F
##    
##             s         j         a
##   s 0.0000000 0.0000000 0.1176471
##   j 0.0000000 0.0000000 0.0000000
##   a 0.0000000 0.0000000 0.0000000

Como calcular a mano!

Podemos obtener el mismo resultado ‘a mano’ - necesitamos el vector de observaciones porque la posterior se calcula a partir de las observaciones de transiciones, no la matriz de transiciones.

Tobs <- sweep(TF$T, 2, N, "*") # obtener las observaciones de transiciones 
Tobs <- rbind(Tobs, N - colSums(Tobs)) # añadir la fila de muerte 
Tobs <- Tobs + 0.25 # añadir los prior
sweep(Tobs, 2, colSums(Tobs), "/")[-4,] # dividir por la suma de la column y descarta la fila de muerte 
##            s           j           a
## s 0.10416667 0.005208333 0.007142857
## j 0.60416667 0.567708333 0.007142857
## a 0.02083333 0.296875000 0.835714286

El prior uniforme rellena las transiciones que faltan, pero también crea problemas porque proporciona valores de transición que son biológicamente imposibles. Por ejemplo, proporciona una transición para adulto->plántula, cuando esta transición sólo es posible en la matriz de fecundidad \(F\). Por esta razón, no recomendamos el uso de priores uniformes. En otra palabra usando un prior uniforme no toma en cuenta el ciclo de vida de una especie.

Matriz de fecundidad

Debemos especificar los parámetros para la fertilidad a priori como una matriz. Las etapas que no hay reproducción o sea que no se producen por reproducción deben ser NA, usando NA_real_. El concepto de NA_real_ es que es un valor que no esta presente pero con puntos decimales. Nota que el valor de prior de la fertilidad es 0.0001.

alpha <- matrix(c(NA_real_, NA_real_, 1e-5,
                  NA_real_, NA_real_, NA_real_,
                  NA_real_, NA_real_, NA_real_), nrow=3, ncol = 3, byrow = TRUE)
beta <- matrix(c(NA_real_, NA_real_, 1e-5,
                  NA_real_, NA_real_, NA_real_,
                  NA_real_, NA_real_, NA_real_), nrow=3, ncol = 3, byrow = TRUE)
fill_fertility(TF, N, alpha = alpha, beta = beta)
##    
##             s         j         a
##   s 0.0000000 0.0000000 0.1176473
##   j 0.0000000 0.0000000 0.0000000
##   a 0.0000000 0.0000000 0.0000000

El cambio en la fertilidad es < 0,0001 en comparación con el valor observado.

Calculando los Priors de fertilidad a mano

Calculando a mano, alfa a priori es el número de crías observadas

y beta a priori es el número de adultos observados.

obs_offspring <- N[3]*TF$F[1,3] 
prior_alpha <- 1e-05
prior_beta <- 1e-05
posterior_alpha <- obs_offspring + prior_alpha
posterior_beta <- N[3] + prior_beta
posterior_alpha / posterior_beta # expected value
## [1] 0.1176473

Esto demuestra por qué la estimación puntual posterior de la fecundidad no cambia mucho; los valores no informativos de \(\alpha\) y \(\beta\) apenas cambian los valores observados.

Ahora podemos juntarlos.

unif <- list(T = fill_transitions(TF, N), 
             F = fill_fertility(TF, N, 
                                alpha = alpha,
                                beta = beta))
unif
## $T
##            [,1]        [,2]        [,3]
## [1,] 0.10416667 0.005208333 0.007142857
## [2,] 0.60416667 0.567708333 0.007142857
## [3,] 0.02083333 0.296875000 0.835714286
## 
## $F
##    
##             s         j         a
##   s 0.0000000 0.0000000 0.1176473
##   j 0.0000000 0.0000000 0.0000000
##   a 0.0000000 0.0000000 0.0000000

El crecimiento poblacional

La tasa de crecimiento asintótico de la población es ahora \(\lambda =\) 0.92. La tasa de crecimiento se reduce ligeramente porque la aplicación de la prioridad uniforme a las probabilidades de transición hace que las transiciones observadas de crecimiento y supervivencia se reduzcan ligeramente en relación con las transiciones no observadas de crecimiento y supervivencia.

Otras opciones para el argumento `returnType

Por defecto, fill_transitions() devuelve la matriz de transición \(T\), y fill_fertility() devuelve la matriz de fertilidad \(F\). Existen otros tres otros valores que puede tomar el argumento returnType:

  1. fill_transitions(... returnType = "TN") puede devolver una matriz aumentada de destinos, que es útil para la simulación. La cuarta fila de este resultado (véase más adelante) es el estado de mortalidad.
fill_transitions(TF, N, returnType = "TN")
##      [,1]  [,2]  [,3]
## [1,] 1.25  0.25  0.25
## [2,] 7.25 27.25  0.25
## [3,] 0.25 14.25 29.25
## [4,] 3.25  6.25  5.25
  1. fill_fertility(... returnType = "ab") devuelve los vectores alfa y beta de los vectores posteriores.
fill_fertility(TF, N, 
               alpha = alpha,
               beta = beta,
               returnType = "ab")
## $alpha
##    
##     s j       a
##   s     4.00001
##   j            
##   a            
## 
## $beta
##      [,1] [,2]     [,3]
## [1,]   NA   NA 34.00001
## [2,]   NA   NA       NA
## [3,]   NA   NA       NA
  1. Ambas funciones también pueden devolver la matriz completa, la suma de \(T\) y \(F\).
fill_transitions(TF, N, returnType = "A")
##    
##               s           j           a
##   s 0.104166667 0.005208333 0.124789916
##   j 0.604166667 0.567708333 0.007142857
##   a 0.020833333 0.296875000 0.835714286

Añadiendo realidad a los análisis

Hasta este punto, el objetivo era de entender las funciones y su aplicaciones. Ahora vamos a añadir realidad a los analisis. Como se ha mencionado no deberiamos usar priors uniforme. Debemos usar priors que son más relevante al ciclo de vida de la especie de interes.

Incorporar priores informativos

Para solucionar el problema de la creación de transiciones imposibles, especificamos una prioridad más informativa obtenida de un experto en orquídeas epifitas (RLT). La información tiene que tener la misma forma que la matriz de transiciones con una fila más que columnas. Esa ultima fila representa los individuos que se mueren de la estapa correspondiente.

RLT_Tprior <- matrix(c(0.25, 0.025, 0.0,
                       0.05, 0.9,   0.025,
                       0.01, 0.025, 0.95,
                       0.69, 0.05,  0.025), 
                     byrow = TRUE, nrow = 4, ncol = 3)

Nota la matriz tiene la 1ª fila, 3ª columna es 0,0, porque esta transición es imposible. Esta prioridad se construye de manera que las columnas suman 1, lo que crea la mayor flexibilidad para la ponderación de la prioridad. Por defecto, la suma es 1, interpretado como un tamaño de muestra a priori de 1.

fill_transitions(TF, N, P = RLT_Tprior)
##              [,1]         [,2]         [,3]
## [1,] 0.1041666667 0.0005208333 0.0000000000
## [2,] 0.5875000000 0.5812500000 0.0007142857
## [3,] 0.0008333333 0.2921875000 0.8557142857

We can specify the weight as a multiple of the sample size for each stage.

fill_transitions(TF, N, P = RLT_Tprior, priorweight = 0.5)
##             [,1]        [,2]        [,3]
## [1,] 0.143939394 0.008333333 0.000000000
## [2,] 0.440909091 0.682978723 0.008333333
## [3,] 0.003333333 0.206914894 0.885294118

En este caso, la prioridad se pondera con la mitad del número observado de transiciones. En este caso, con sólo 2 transiciones, el tamaño efectivo de la muestra a priori sigue siendo 1. Si el número de transiciones observadas fuera Si el número de transiciones observadas fuera mayor, una ponderación a priori de 0,5N sería mayor que 1, pero permitiría que los datos dominen.

Part 3: Obtain Credible Intervals

Obtener los inertvalos de confianza (IC) para entradas de matriz individuales

La distribución posterior marginal de un elemento en un multinomio es una distribución beta, y usamos esto para obtener intervalos creíbles en nuestro tasas de transición. Podemos usar el tipo de retorno TN para obtener los parámetros de el multinomio deseado.

TN <- fill_transitions(TF, N, P = RLT_Tprior, priorweight = 0.5, returnType = "TN")
a <- TN[,1] # cambie 1 a 2, 3 etc para obter la distribución beta marginal de cada columna. 
b <- sum(TN[,1]) - TN[,1]# cambie 1 a 2, 3 etc para obter la distribución beta marginal de cada columna. 
p <- a / (a + b)
lcl <- qbeta(0.025, a, b)
ucl <- qbeta(0.975, a, b)
knitr::kable(sprintf("%.3f (%.3f, %.3f)", p, lcl, ucl))
x
0.144 (0.025, 0.343)
0.441 (0.218, 0.677)
0.003 (0.000, 0.038)
0.412 (0.195, 0.649)

Esas son las estimaciones puntuales (comparar con la primera columna anterior), inferior y superior \(95\%\) de los intervalos creíbles simétricos para transiciones de la etapa de plántula. Existe un alto grado de incertidumbre debido a la tamaño de muestra pequeño (\(2\)) y bajo peso en el anterior (\(1\)), lo que lleva a un tamaño de muestra efectivo de 3. Si aumentamos el tamaño de muestra efectivo a \(20\) especificando: priorweight\(= 9 (9*2 = 18 + 2 = 20)\) el los intervalos creíbles simétricos se reducen bastante:

La importancia aqui es que el tamaño de muestra tiene un impacto sobre la confianza que se tiene sobre el estimado de punto (el promedio) de las transiciones y permanencia y mortandad.

La tasa de transición de plántula a juvenil se reduce cuando el tamaño de la muestra es demasiado grande. En general, el tamaño de la muestra previa debe ser menos que el tamaño de muestra observado.

Intervalos creíbles de \(\lambda\)

Obteniendo intervalos creíbles sobre la tasa de crecimiento asintótica, \(\lambda\), requiere simular matrices a partir de las distribuciones posteriores. Esto es algo complicado de hacer correctamente, y hemos escrito una función raretrans::sim_transitions() para generar una lista de matrices simuladas dada la matriz observada y especificaciones previas.

sim_transitions(TF, N, P = RLT_Tprior, alpha = alpha, beta = beta,
                priorweight = 0.5)
## [[1]]
##            [,1]         [,2]         [,3]
## [1,] 0.10716886 0.0008727891 3.679154e-01
## [2,] 0.28119531 0.5899414123 4.491159e-05
## [3,] 0.01024508 0.2612469330 8.700304e-01

Ahora simulamos 5000 veces, calculamos el valor \(\lambda\) de cada matriz y creamos un histograma de la distribución.

#set.seed(8390278) # make this part reproducible
alpha2 <- matrix(c(NA_real_, NA_real_, 0.025,
                  NA_real_, NA_real_, NA_real_,
                  NA_real_, NA_real_, NA_real_), nrow=3, ncol = 3, byrow = TRUE)
beta2 <- matrix(c(NA_real_, NA_real_, 1,
                  NA_real_, NA_real_, NA_real_,
                  NA_real_, NA_real_, NA_real_), nrow=3, ncol = 3, byrow = TRUE)
# generar 5000 matrices basado en las previas de transciones y de fertilidades, el tamaño de muestra, en adición de los datos
RLT_0.5 <- sim_transitions(TF, N, P = RLT_Tprior, alpha = alpha2, beta = beta2,
                priorweight = 0.5, samples = 5000)
# extract the lambdas for each matrix
RLT_0.5 <- tibble(lposterior = map_dbl(RLT_0.5, lambda)) # convertir la lista en un tibble
ggplot(data = RLT_0.5,
       mapping = aes(x = lposterior)) + 
  geom_histogram(binwidth = 0.01, colour="white") + 
  rlt_theme

Detemrinar si el \(\lambda\) es significativamente diferente de 1

También podemos calcular algunas estadísticas de resumen. pincrease es el probabilidad de que \(\lambda > 1\).

RLT_0.5_summary <- summarize(RLT_0.5,
                             medianL = median(lposterior),
                             meanL = mean(lposterior),
                             lcl = quantile(lposterior, probs = 0.025),
                             ucl = quantile(lposterior, probs = 0.975),
                             pincrease = sum(lposterior > 1.)/n())
knitr::kable(RLT_0.5_summary, digits = 2)
medianL meanL lcl ucl pincrease
0.96 0.96 0.87 1.03 0.14

Crecimiento Poblacional

Por: Tamara

Introducción al crecimiento poblacional

Ahora el primer paso es explicar a que …..

  • Crecimiento intrínseco
    • Estimado de intervalos de confianza de lambda

Métodos

Elasticidad

Por: Demetria, Ernesto Mujica y Elaine Gonzalez

Qué es la Elasticidad

Como se interpreta la eslaticidad

Como se calcula la eslasticidad

Limitaciones

Referencias

Dinámica de transiciones

Por: ???

Definiciones de DT

Cual es la ventaja de la DT

Como se calcula

Paquete de R para calcular la DT

Limitaciones

Referencias

Elasticidad no lineal

Por : ???

Transfer function

Valor biológico

Métodos de calculo

Paquete de R para calcular le eslaticidad no lineal

Referencias

LTRE

Por: Adriana Ramirez Martinez

Introducción a LTRE

Ahora el primer paso es explicar a que …..

Métodos

Metodos de Simulaciones

Por: ???

Introducciones a métodos de simulaciones

Ventaja de usar simulaciones

Ejemplo Simple de simulaciones

El uso de matrices para estudios evolutivos

Por: Roberto Salguero-Gómez

PPM_Orquidea sinopsis historico

Por: Raymond y todos

Por: Un overview de la historia de estudios PPm con orquideas

Compadre_Orchid PPM y su uso

Raymond y Roberto

library(Rcompadre)
library(tidyverse)
library(gt)
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows

Load data from COMPADRE

load("~/Dropbox/GitHub_Dropbox_Drive/GitHub/Taller_Demo_Peru/Taller_Diagnostico_Poblacional/COMPADRE_v.6.23.5.0.RData")

ALLSp=as_cdb(compadre)  # Un baso critico: Convertir la base de datos anterior COM(P)ADRE (de clase 'list') en la base en un objeto CompadreDB.

names(ALLSp) # Nombre de las variables
##  [1] "mat"                    "MatrixID"               "SpeciesAuthor"         
##  [4] "SpeciesAccepted"        "CommonName"             "Kingdom"               
##  [7] "Phylum"                 "Class"                  "Order"                 
## [10] "Family"                 "Genus"                  "Species"               
## [13] "Infraspecies"           "InfraspeciesType"       "OrganismType"          
## [16] "DicotMonoc"             "AngioGymno"             "Authors"               
## [19] "Journal"                "SourceType"             "OtherType"             
## [22] "YearPublication"        "DOI_ISBN"               "AdditionalSource"      
## [25] "StudyDuration"          "StudyStart"             "StudyEnd"              
## [28] "ProjectionInterval"     "MatrixCriteriaSize"     "MatrixCriteriaOntogeny"
## [31] "MatrixCriteriaAge"      "MatrixPopulation"       "NumberPopulations"     
## [34] "Lat"                    "Lon"                    "Altitude"              
## [37] "Country"                "Continent"              "Ecoregion"             
## [40] "StudiedSex"             "MatrixComposite"        "MatrixSeasonal"        
## [43] "MatrixTreatment"        "MatrixCaptivity"        "MatrixStartYear"       
## [46] "MatrixStartSeason"      "MatrixStartMonth"       "MatrixEndYear"         
## [49] "MatrixEndSeason"        "MatrixEndMonth"         "CensusType"            
## [52] "MatrixSplit"            "MatrixFec"              "Observations"          
## [55] "MatrixDimension"        "SurvivalIssue"          "_Database"             
## [58] "_PopulationStatus"      "_PublicationStatus"
index_O=ALLSp %>% 
 filter(Family %in% c("Orchidaceae")) # Extraer la orquídeas de la base de datos. 

Lista de especies de orquídeas en la base de datos de COPADRE

unique(index_O$SpeciesAccepted)
##  [1] "Caladenia amonea"          "Caladenia argocalla"      
##  [3] "Caladenia clavigera"       "Caladenia elegans"        
##  [5] "Caladenia graniticola"     "Caladenia macroclavia"    
##  [7] "Caladenia oenochila"       "Caladenia rosella"        
##  [9] "Caladenia valida"          "Epipactis atrorubens"     
## [11] "Lepanthes rubripetala"     "Spathoglottis plicata"    
## [13] "Broughtonia cubensis"      "Cephalanthera longifolia" 
## [15] "Cleistes bifaria"          "Cypripedium calceolus"    
## [17] "Dendrophylax lindenii"     "Erycina crista-galli"     
## [19] "Lepanthes acuminata"       "Lepanthes caritensis"     
## [21] "Oncidium poikilostalix"    "Serapias cordigera"       
## [23] "Telipogon helleri"         "Aspasia principissa"      
## [25] "Guarianthe aurantiaca"     "Jacquiniella leucomelana" 
## [27] "Jacquiniella teretifolia"  "Lepanthes eltoroensis"    
## [29] "Lycaste aromatica"         "Tolumnia variegata"       
## [31] "Cleistesiopsis bifaria"    "Cleistesiopsis divaricata"
## [33] "Corallorhiza trifida"      "Cypripedium fasciculatum" 
## [35] "Cypripedium lentiginosum"  "Cypripedium parviflorum"  
## [37] "Dactylorhiza lapponica"    "Herminium monorchis"      
## [39] "Himantoglossum hircinum"   "Lepanthes rupestris"      
## [41] "Neotinea ustulata"         "Ophrys sphegodes"         
## [43] "Orchis purpurea"           "Platanthera hookeri"      
## [45] "Oeceoclades maculata"      "Brassavola cucullata"

How many unique studies?

To know how long the studies were and be unique I need to select combinations of variables that make it unique.

Subset

names(index_O)
##  [1] "mat"                    "MatrixID"               "SpeciesAuthor"         
##  [4] "SpeciesAccepted"        "CommonName"             "Kingdom"               
##  [7] "Phylum"                 "Class"                  "Order"                 
## [10] "Family"                 "Genus"                  "Species"               
## [13] "Infraspecies"           "InfraspeciesType"       "OrganismType"          
## [16] "DicotMonoc"             "AngioGymno"             "Authors"               
## [19] "Journal"                "SourceType"             "OtherType"             
## [22] "YearPublication"        "DOI_ISBN"               "AdditionalSource"      
## [25] "StudyDuration"          "StudyStart"             "StudyEnd"              
## [28] "ProjectionInterval"     "MatrixCriteriaSize"     "MatrixCriteriaOntogeny"
## [31] "MatrixCriteriaAge"      "MatrixPopulation"       "NumberPopulations"     
## [34] "Lat"                    "Lon"                    "Altitude"              
## [37] "Country"                "Continent"              "Ecoregion"             
## [40] "StudiedSex"             "MatrixComposite"        "MatrixSeasonal"        
## [43] "MatrixTreatment"        "MatrixCaptivity"        "MatrixStartYear"       
## [46] "MatrixStartSeason"      "MatrixStartMonth"       "MatrixEndYear"         
## [49] "MatrixEndSeason"        "MatrixEndMonth"         "CensusType"            
## [52] "MatrixSplit"            "MatrixFec"              "Observations"          
## [55] "MatrixDimension"        "SurvivalIssue"          "_Database"             
## [58] "_PopulationStatus"      "_PublicationStatus"
SPECIES_O=index_O %>% select(StudyStart, StudyEnd, SpeciesAccepted, YearPublication, Authors, DOI_ISBN, OrganismType, MatrixPopulation,mat) %>% 
  group_by(SpeciesAccepted, YearPublication, Authors, DOI_ISBN, OrganismType, StudyStart, StudyEnd) %>% 
  summarize(n_populations = length(unique(MatrixPopulation))) %>% 
  arrange(desc(n_populations)) %>% 
  mutate(StudyStart=as.numeric(StudyStart)) %>% 
  mutate(StudyEnd=as.numeric(StudyEnd)) %>% 
  drop_na(StudyStart, StudyEnd)

SPECIES_O %>% kable()
SpeciesAccepted YearPublication Authors DOI_ISBN OrganismType StudyStart StudyEnd n_populations
Lepanthes caritensis 2018 Crain; Tremblay; Ferguson 10.1002/1438-390X.1002 Epiphyte 2010 2012 18
Epipactis atrorubens 2017 Hens; Pakanen; Jäkäläniemi; Tuomi; Kvist 10.1016/j.biocon.2017.04.019 Herbaceous perennial 2000 2015 8
Lepanthes rubripetala 2010 Schödelbauerová; Tremblay; Kindlmann 10.1007/s10531-009-9724-1 Epiphyte 1994 2007 8
Lepanthes rupestris 2001 Tremblay; Ackerman 10.1006/bijl.2000.0485 Herbaceous perennial 1994 1996 7
Lepanthes rupestris 2014 Tremblay; McCarthy 10.1371/journal.pone.0102859 Herbaceous perennial 1993 1996 7
Orchis purpurea 2010 Jacquemyns; Brys; Jongejans 10.1890/08-2321.1 Herbaceous perennial 2002 2008 7
Lepanthes rubripetala 2001 Tremblay; Ackerman 10.1006/bijl.2000.0485 Epiphyte 1994 1996 6
Lepanthes rubripetala 2015 Tremblay; Raventós; Ackerman; 10.1093/aob/mcv031 Epiphyte 1994 1996 6
Neotinea ustulata 2007 Shefferson; Tali 10.1111/j.1365-2745.2006.01195.x Herbaceous perennial 1993 2005 6
Serapias cordigera 2014 Pellegrino; Bellusci 10.1111/boj.12204 Herbaceous perennial 1999 2012 6
Cephalanthera longifolia 2012 Shefferson; Kull; Tali; Kellett 10.1890/ES11-00328.1 Herbaceous perennial 2002 2007 4
Cleistesiopsis bifaria 1991 Wells; Willems 90-5103-068-1 Herbaceous perennial 1983 1990 4
Cypripedium calceolus 2005 Nicolè; Brzosko; Till-Bottraud 10.1111/j.1365-2745.2005.01010.x Herbaceous perennial 1991 2000 4
Cypripedium fasciculatum 2011 Thorpe; Stanley; Kayne; Latham NA Herbaceous perennial 1999 2007 4
Oeceoclades maculata 2019 Riverón-Giró; Raventós; Damon; García-González; Mújica 10.1007/s10530-019-01945-7 Herbaceous perennial 2014 2016 4
Platanthera hookeri 2007 Reddoch; Reddoch 10.3159/1095-5674(2007)134[369:PEOPHO]2.0.CO;2 Herbaceous perennial 1990 2005 4
Brassavola cucullata 2020 Ackerman; Tremblay; Pérez; Madden; Bechtold; Boeken NA Epiphyte 2009 2014 3
Cypripedium calceolus 2012 Shefferson; Kull; Tali; Kellett 10.1890/ES11-00328.1 Herbaceous perennial 2002 2007 3
Dactylorhiza lapponica 2010 Sletvold; Øien; Moen 10.1016/j.biocon.2009.12.017 Herbaceous perennial 1990 2006 3
Lepanthes eltoroensis 2001 Tremblay; Ackerman 10.1006/bijl.2000.0485 Epiphyte 1994 1996 3
Cleistes bifaria 2006 Gregg; Kéry 10.1016/j.biocon.2005.09.044 Herbaceous perennial 1986 1996 2
Cypripedium calceolus 2010 García; Goñi; Guzman 10.1111/j.1523-1739.2010.01466.x Herbaceous perennial 1994 2002 2
Erycina crista-galli 2007 Mondragón; Maldonado; Aguilar-Santelises 10.1111/boj.12204 Epiphyte 2004 2005 2
Jacquiniella leucomelana 2009 Winkler; Hülber; Hietz 10.1093/aob/mcp188 Epiphyte 2002 2005 2
Jacquiniella teretifolia 2009 Winkler; Hülber; Hietz 10.1093/aob/mcp188 Epiphyte 2002 2005 2
Lepanthes caritensis 1997 Tremblay NA Epiphyte 1994 1996 2
Lycaste aromatica 2009 Winkler; Hülber; Hietz 10.1093/aob/mcp188 Epiphyte 2002 2005 2
Aspasia principissa 2006 Zotz; Schmidt 10.1016/j.biocon.2005.07.022 Epiphyte 1997 2004 1
Broughtonia cubensis 2015 Raventós; Gonzalez; Mújica; Bonet 10.1111/btp.12231 Epiphyte 2006 2010 1
Caladenia amonea 2009 Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould 10.1071/BT08167 Epiphyte 1996 2007 1
Caladenia argocalla 2009 Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould 10.1071/BT08167 Epiphyte 1996 2007 1
Caladenia clavigera 2009 Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould 10.1071/BT08167 Epiphyte 1996 2007 1
Caladenia elegans 2009 Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould 10.1071/BT08167 Epiphyte 1996 2007 1
Caladenia graniticola 2009 Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould 10.1071/BT08167 Epiphyte 1996 2007 1
Caladenia macroclavia 2009 Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould 10.1071/BT08167 Epiphyte 1996 2007 1
Caladenia oenochila 2009 Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould 10.1071/BT08167 Epiphyte 1996 2007 1
Caladenia rosella 2009 Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould 10.1071/BT08167 Epiphyte 1996 2007 1
Caladenia valida 2009 Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould 10.1071/BT08167 Epiphyte 1996 2007 1
Cleistesiopsis divaricata 1991 Wells; Willems 90-5103-068-1 Herbaceous perennial 1983 1990 1
Corallorhiza trifida 2009 Iriondo; Giménez-Benavides; Albert; Lozano; Escudero 978-84-8014-746-0 Herbaceous perennial 2001 2004 1
Cypripedium parviflorum 2014 Shefferson; Warren II; Pulliam 10.1111/1365-2745.12281 Herbaceous perennial 1994 2012 1
Dactylorhiza lapponica 2013 Sletvold; Dahlgren; Øien; Moen; Ehrlén 10.1111/gcb.12167 Herbaceous perennial 1981 2010 1
Dendrophylax lindenii 2015 Raventós; Gonzalez; Mújica; Bonet 10.1111/btp.12231 Epiphyte 2006 2010 1
Epipactis atrorubens 2011 Jäkäläniemi; Crone; Närhi; Tuomi 10.1890/10-1957.1 Herbaceous perennial 2000 2008 1
Guarianthe aurantiaca 2009 Mondragón 10.1111/j.1442-1984.2009.00230.x Epiphyte 2004 2006 1
Herminium monorchis 1998 Wells; Rothery; Cox; Bamford 10.1111/j.1095-8339.1998.tb02514.x Herbaceous perennial 1966 1995 1
Himantoglossum hircinum 2006 Pfeifer; Wiegand; Heinrich; Jetschke 10.1111/j.1365-2664.2006.01148.x Herbaceous perennial 1976 2001 1
Lepanthes acuminata 2018 Raventós; García-González; Riverón-Giró; Damon 10.1080/17550874.2018.1444110 Epiphyte 2013 2015 1
Oncidium poikilostalix 2017 García-González; Damon; Raventós; Riverón-Giró; Mújica; Solís-Montero 10.1080/17550874.2017.1315840 Epiphyte 2013 2015 1
Oncidium poikilostalix 2018 Raventós; García-González; Riverón-Giró; Damon 10.1080/17550874.2018.1444110 Epiphyte 2013 2015 1
Ophrys sphegodes 1991 Wells; Willems 90-5103-068-1 Herbaceous perennial 1983 1990 1
Spathoglottis plicata 2017 Falcón; Ackerman; Tremblay 10.1007/s10530-016-1318-8 Herbaceous perennial 2009 2011 1
Telipogon helleri 2018 Raventós; García-González; Riverón-Giró; Damon 10.1080/17550874.2018.1444110 Epiphyte 2013 2015 1
Tolumnia variegata 1993 Calvo 10.2307/1940473 Epiphyte 1988 1990 1
write_csv(SPECIES_O, "Species_O.csv")
SPECIES_O$SpeciesAccepted <- fct_reorder(SPECIES_O$SpeciesAccepted, SPECIES_O$StudyStart, .desc = FALSE)

ggplot(SPECIES_O, aes(SpeciesAccepted, color=OrganismType))+
  geom_linerange(aes(x= SpeciesAccepted  , ymin=StudyStart, ymax=StudyEnd))+
  coord_flip()+
  theme(legend.position = c(0.2, 0.8))+
  theme(axis.text.x = element_text(color = "grey20", size = 9, angle = 90, hjust = .5, vjust = .5, face = "plain"),
        axis.text.y = element_text(color = "grey20", size = 7, angle = 0, hjust = 1, vjust = 0, face = "plain"),  
        axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
        axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))+
  ylab("")+
  xlab("")

index_O=index_O %>% 
  mutate(StudyDuration=as.numeric(StudyDuration))

table(index_O$StudyDuration)
## 
##   2   3   4   5   6   7   8   9  10  11  12  13  14  16  17  19  26  30 
##   2 211  37   2  82  43  26  47  28   2   9   6  86  53   7   1   1   3
table(index_O$OrganismType)
## 
##             Epiphyte Herbaceous perennial 
##                  248                  399
ggplot(index_O, aes(StudyDuration, fill=OrganismType))+
         geom_histogram(colour="white")+
  facet_wrap(~OrganismType)+
  theme(legend.position = "none")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (`stat_bin()`).

ggsave("Duración_Epi_Ter.pdf")
## Saving 7 x 5 in image
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (`stat_bin()`).
plot(index_O$Lon,index_O$Lat,main = "Location")

Getting the whole database for orchids

index <- which(compadre$metadata$Family=="Orchidaceae") 
names(Compadre)
##  [1] "mat"                    "SpeciesAuthor"          "SpeciesAccepted"       
##  [4] "CommonName"             "Genus"                  "Family"                
##  [7] "Order"                  "Class"                  "Phylum"                
## [10] "Kingdom"                "OrganismType"           "DicotMonoc"            
## [13] "AngioGymno"             "Authors"                "Journal"               
## [16] "YearPublication"        "DOI_ISBN"               "AdditionalSource"      
## [19] "StudyDuration"          "StudyStart"             "StudyEnd"              
## [22] "ProjectionInterval"     "NumberPopulations"      "MatrixCriteriaSize"    
## [25] "MatrixCriteriaOntogeny" "MatrixCriteriaAge"      "MatrixPopulation"      
## [28] "Lat"                    "Lon"                    "Altitude"              
## [31] "Country"                "Continent"              "Ecoregion"             
## [34] "StudiedSex"             "MatrixComposite"        "MatrixTreatment"       
## [37] "MatrixCaptivity"        "MatrixStartYear"        "MatrixStartSeason"     
## [40] "MatrixStartMonth"       "MatrixEndYear"          "MatrixEndSeason"       
## [43] "MatrixEndMonth"         "MatrixSplit"            "MatrixFec"             
## [46] "Observation"            "MatrixDimension"        "SurvivalIssue"         
## [49] "AnnualPeriodicity"
subset(index_O, Family =="Orchidaceae"  &
             MatrixDimension >2)
## A COM(P)ADRE database ('CompadreDB') object with 46 SPECIES and 647 MATRICES.
## 
## # A tibble: 647 × 59
##    mat        MatrixID SpeciesAuthor   SpeciesAccepted CommonName Kingdom Phylum
##    <list>        <int> <chr>           <chr>           <chr>      <chr>   <chr> 
##  1 <CompdrMt>   238285 Caladenia_amon… Caladenia amon… <NA>       Plantae Trach…
##  2 <CompdrMt>   238286 Caladenia_argo… Caladenia argo… <NA>       Plantae Trach…
##  3 <CompdrMt>   238287 Caladenia_clav… Caladenia clav… <NA>       Plantae Trach…
##  4 <CompdrMt>   238288 Caladenia_eleg… Caladenia eleg… <NA>       Plantae Trach…
##  5 <CompdrMt>   238289 Caladenia_gran… Caladenia gran… <NA>       Plantae Trach…
##  6 <CompdrMt>   238290 Caladenia_macr… Caladenia macr… <NA>       Plantae Trach…
##  7 <CompdrMt>   238291 Caladenia_oeno… Caladenia oeno… <NA>       Plantae Trach…
##  8 <CompdrMt>   238292 Caladenia_rose… Caladenia rose… <NA>       Plantae Trach…
##  9 <CompdrMt>   238293 Caladenia_vali… Caladenia vali… <NA>       Plantae Trach…
## 10 <CompdrMt>   238565 Epipactis_atro… Epipactis atro… Darkred h… Plantae Trach…
## # ℹ 637 more rows
## # ℹ 52 more variables: Class <chr>, Order <chr>, Family <chr>, Genus <chr>,
## #   Species <chr>, Infraspecies <chr>, InfraspeciesType <chr>,
## #   OrganismType <chr>, DicotMonoc <chr>, AngioGymno <chr>, Authors <chr>,
## #   Journal <chr>, SourceType <chr>, OtherType <chr>, YearPublication <chr>,
## #   DOI_ISBN <chr>, AdditionalSource <chr>, StudyDuration <dbl>,
## #   StudyStart <chr>, StudyEnd <chr>, ProjectionInterval <chr>, …
subset(index_O,DicotMonoc == "Eudicot" & 
              Country %in% c("USA", "CAN") & 
              MatrixDimension > 2)
## A COM(P)ADRE database ('CompadreDB') object with 0 SPECIES and 0 MATRICES.
## 
## # A tibble: 0 × 59
## # ℹ 59 variables: mat <list>, MatrixID <int>, SpeciesAuthor <chr>,
## #   SpeciesAccepted <chr>, CommonName <chr>, Kingdom <chr>, Phylum <chr>,
## #   Class <chr>, Order <chr>, Family <chr>, Genus <chr>, Species <chr>,
## #   Infraspecies <chr>, InfraspeciesType <chr>, OrganismType <chr>,
## #   DicotMonoc <chr>, AngioGymno <chr>, Authors <chr>, Journal <chr>,
## #   SourceType <chr>, OtherType <chr>, YearPublication <chr>, DOI_ISBN <chr>,
## #   AdditionalSource <chr>, StudyDuration <dbl>, StudyStart <chr>, …
#cdb_compare(index_O,x)


x <- subset(index_O,Family == "Orchidaceae")

x_OT=x %>% 
  group_by(OrganismType)
#Orchids_New=as_cdb(index)
#compadre$mat[index]

Compadre_flagged <- cdb_flag(index_O)

x <- subset(Compadre_flagged, check_NA_A == FALSE & check_ergodic == TRUE)

lambdaVals <- sapply(matA(x), popdemo::eigs, what="lambda")
summary(lambdaVals)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3888  0.9635  0.9973  0.9944  1.0232  1.7760
hist(lambdaVals, main = "Lambda values")

library(purrr)
lambdaVals1 <- map_dbl(matA(x), ~popdemo::eigs(.x, what="lambda"))
 
 
#Or with popbio, which avoids some warning messages…
lambdaVals2 <- map_dbl(matA(x), ~popbio::lambda(.x))
x2=x %>% 
  mutate(OrganismType = case_when(
    Genus ==  "Caladenia" & OrganismType == "Epiphyte" ~ "Herbaceous perennial",
    TRUE ~ OrganismType
  ))

epi=x2 %>% 
  filter(OrganismType=="Epiphyte")

terr=x2 %>% 
  filter(OrganismType=="Herbaceous perennial")

Compadre_flagged <- cdb_flag(index_O)

x <- subset(Compadre_flagged, check_NA_A == FALSE & check_ergodic == TRUE)

lambdaVals <- sapply(matA(x), popdemo::eigs, what=“lambda”) summary(lambdaVals) hist(lambdaVals, main = “Lambda values”)

Compadre_flagged_epi <- cdb_flag(epi)

x_epi <- subset(Compadre_flagged_epi, check_NA_A == FALSE & check_ergodic == TRUE)

#sapply(matA(x_epi), popdemo::eigs, what="lambda")

library(purrr)
lambda_epi <- map_dbl(matA(x_epi), ~popdemo::eigs(.x, what="lambda"))

#Or with popbio, which avoids some warning messages…
lambda_terr <- map_dbl(matA(terr), ~popbio::lambda(.x))
summary(lambda_epi)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3888  0.9874  0.9972  0.9784  1.0027  1.3592
hist(lambda_epi, main = "Lambda values")

summary(lambda_terr)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4089  0.9349  1.0000  1.0053  1.0538  1.7760
hist(lambda_terr, main = "Lambda values")

df_Lamb_epi=as.data.frame(lambda_epi)
df_Lamb_epi=df_Lamb_epi %>% 
  add_column(Habit_Type = "Epiphyte") %>% 
  rename(lambda=lambda_epi)


df_Lamb_terr=as.data.frame(lambda_terr)
df_Lamb_terr=df_Lamb_terr %>% 
  add_column(Habit_Type = "Terrestrial")%>% 
  rename(lambda=lambda_terr)


ALL_Lambdas=rbind(df_Lamb_epi, df_Lamb_terr)
ggplot(ALL_Lambdas, aes(lambda, fill=Habit_Type ))+
  geom_histogram(colour="white") + 
  facet_wrap( ~Habit_Type)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

The number of populations

x2 %>% 
  group_by(SpeciesAccepted) %>% 
  summarize(n_populations = length(unique(MatrixPopulation))) %>% 
  arrange(desc(n_populations))
## # A tibble: 45 × 2
##    SpeciesAccepted          n_populations
##    <chr>                            <int>
##  1 Lepanthes rubripetala               20
##  2 Lepanthes rupestris                 14
##  3 Lepanthes caritensis                13
##  4 Cypripedium calceolus                9
##  5 Orchis purpurea                      7
##  6 Neotinea ustulata                    6
##  7 Serapias cordigera                   6
##  8 Cypripedium fasciculatum             4
##  9 Epipactis atrorubens                 4
## 10 Oeceoclades maculata                 4
## # ℹ 35 more rows
compadre_replicated_pops <- x2 %>% 
  group_by(SpeciesAccepted) %>% 
  mutate(n_pops = length(unique(MatrixPopulation))) %>% 
  ungroup() %>%
  subset(n_pops >= 10)

compadre_replicated_pops
## A COM(P)ADRE database ('CompadreDB') object with 3 SPECIES and 167 MATRICES.
## 
## # A tibble: 167 × 74
##    mat        MatrixID SpeciesAuthor   SpeciesAccepted CommonName Kingdom Phylum
##    <list>        <int> <chr>           <chr>           <chr>      <chr>   <chr> 
##  1 <CompdrMt>   238838 Lepanthes_rubr… Lepanthes rubr… <NA>       Plantae Magno…
##  2 <CompdrMt>   239751 Lepanthes_cari… Lepanthes cari… <NA>       Plantae Magno…
##  3 <CompdrMt>   239752 Lepanthes_cari… Lepanthes cari… <NA>       Plantae Magno…
##  4 <CompdrMt>   239753 Lepanthes_cari… Lepanthes cari… <NA>       Plantae Magno…
##  5 <CompdrMt>   239754 Lepanthes_cari… Lepanthes cari… <NA>       Plantae Magno…
##  6 <CompdrMt>   239755 Lepanthes_cari… Lepanthes cari… <NA>       Plantae Magno…
##  7 <CompdrMt>   239756 Lepanthes_cari… Lepanthes cari… <NA>       Plantae Magno…
##  8 <CompdrMt>   239757 Lepanthes_cari… Lepanthes cari… <NA>       Plantae Magno…
##  9 <CompdrMt>   239758 Lepanthes_cari… Lepanthes cari… <NA>       Plantae Magno…
## 10 <CompdrMt>   239759 Lepanthes_cari… Lepanthes cari… <NA>       Plantae Magno…
## # ℹ 157 more rows
## # ℹ 67 more variables: Class <chr>, Order <chr>, Family <chr>, Genus <chr>,
## #   Species <chr>, Infraspecies <chr>, InfraspeciesType <chr>,
## #   OrganismType <chr>, DicotMonoc <chr>, AngioGymno <chr>, Authors <chr>,
## #   Journal <chr>, SourceType <chr>, OtherType <chr>, YearPublication <chr>,
## #   DOI_ISBN <chr>, AdditionalSource <chr>, StudyDuration <dbl>,
## #   StudyStart <chr>, StudyEnd <chr>, ProjectionInterval <chr>, …
ggplot2::ggplot(x2, aes(Lon, Lat)) +
  borders(database = "world", fill = "grey80", col = NA) +
  geom_point(col = "steelblue", size = 1.8, alpha = 0.8)
## Warning: Removed 28 rows containing missing values (`geom_point()`).

# function to calculate life expectancy
lifeExpectancy <- function(matU, startLife) {
  N <- solve(diag(nrow(matU)) - matU)
  return(colSums(N)[startLife])
}

compadre_life_expect <- x2 %>%
  filter(MatrixComposite == "Mean", # filter is the dplyr version of subset
         MatrixTreatment == "Unmanipulated",
         MatrixCaptivity == "W",
         #ProjectionInterval == "1"
         ) %>% 
  mutate(StageID = cdb_id_stages(.)) %>%
  cdb_collapse(columns = "StageID") %>%
  cdb_flag() %>% 
  filter(check_NA_U == FALSE,
         check_zero_U == FALSE,
         check_singular_U == FALSE) %>% 
  mutate(matU = matU(.), start_life = mpm_first_active(.)) %>% 
  mutate(life_expectancy = mapply(lifeExpectancy, matU, start_life)) %>% 
 # filter(life_expectancy >= 1) %>% 
  mutate(OrganismType = reorder(OrganismType, life_expectancy, median))
## Warning in mpm_mean(x$mat): CompadreMat objects in given list do not all have
## the same MatrixClassOrganized. Returning MatrixClassOrganized from first list
## element
ggplot2::ggplot(compadre_life_expect, aes(OrganismType, life_expectancy)) +
  geom_boxplot() +
  scale_y_log10() +
  coord_flip() +
  labs(x = NULL, y = "Life expectancy (years)")
## Warning: Removed 1 rows containing non-finite values (`stat_boxplot()`).

library(Rcompadre)
library(popdemo)
## Welcome to popdemo! This is version 1.3-0
## Use ?popdemo for an intro, or browseVignettes('popdemo') for vignettes
## Citation for popdemo is here: doi.org/10.1111/j.2041-210X.2012.00222.x
## Development and legacy versions are here: github.com/iainmstott/popdemo
data(Compadre)


Compadre$matA <- matA(Compadre)

# create empty vector to store output
Compadre$dim <- numeric(nrow(Compadre))

index$dim <- numeric(nrow(index_O))
## Warning in index$dim <- numeric(nrow(index_O)): Coercing LHS to a list
# loop through all rows of Compadre
for (i in seq_len(nrow(Compadre))) {
  Compadre$dim[i] <- nrow(Compadre$matA[[i]])
}

# function to determine whether matrix 'mat' has any stages with no transitions
NullStages <- function(mat) any(colSums(mat) == 0)

# apply function to every element of A
Compadre$null_stages <- sapply(Compadre$matA, NullStages)

NullStages(Compadre$matA[[1]]) # apply function to single element
## [1] FALSE
Compadre$null_stages <- sapply(matA(Compadre), NullStages)

Traduccion del articulo Protocolo de información

Por: Grupo de Anne

Dinámica espacial y temporal de Encyclia bocourtii después de 15 años en la Península de Guanahacabibes, Cuba

Por: Ernesto y Elaine

Nhora

Por: Nhora

Impactos de datos sin sentido sobre los análisis de dinámica poblacional

Por: Raymond L. Tremblay

El valor de los estudios cientificos es que los datos representa una visión suficiente cerca a la realidad. El objetivo es tener una apreciación de los parametros más importante para definir un cierto patrón o interacciones. Por concequencia la base de todo estudios is based on the fundamewntal units of data collection. If the data do not represent the reality of the study then the interperettion of the analysis is likely to be erroneous. Fancy mathematics and analyses will NOT result in better or more realistic interpretation if the data is erroneous.

In this section we will consider different aspects of population projection matrix analises and different aspects of the data collection or analysis which are problematic. For each of the problematic situation I will show an example and how it impacts the results and analyses. These “Impacts” are not meant to be inclusive of all possible results of non-sensical data, but an example of not considering these issues and how it may warp the intepretations. Thus a warning to all population biologist to be weary of these issues.


Small sample size or rare events

Without a doubt the main topic for the use of PPM has been to evaluate population projection of rare or endangered species (other questions are cological or evolutionary) (ref). Consequently, sample size of the study or some of the life stages/ages are reduced. These reduced sample size cause parameter estimates and often non-sensical results.


No Mortality/Perfect survivorship

Consider a species were data is collected and the transition matrix (Sp1matU) is as follows and fertility matriz is (Sp1matF). Note that none of the individuals died in the adult stage (perfect survivorship). Consiquently, the population size never decreases or increases after a time period. Under ALL biologically realistic modelling we would expect populaiton size to sdtart decreasing if a population has no receuitment.

library(DiagrammeR)

Sp1matU <- rbind(
  c(0.0, 0.0, 0.0),
  c(0.5, 0.3, 0.0),
  c(0.0, 0.4, 1.0)
) # transition matrix

Sp1matF <- rbind(
  c(0.0, 0.0, 1.0),
  c(0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0)
) # fertility matrix

Sp1matA = Sp1matU+Sp1matF # TF matrix
library(Rage)
stages <- c("plantula", "juvenil", "adulto")

plot_life_cycle(Sp1matU, stages=stages, fontsize = 0)

Thus if we analize this matrix we assume that none of the individuals in the adult stage die, at any time period!!!. Clearly this is not realistic. For any species the likelyhood of death at any stage is never zero (although is could very small) and thus our matrix is non-sensicle. Consider a tree species, such a Sequoia, it is the likely for large trees of this species it is likely to that survivorship is very high, however never 100%.

In the following script we show that population changes after 5 -6 periods reminds close to one and does not change eventhough we have not recruits (we use the transition matrix without fertility). If there are no recruits (fertility matrix) population size should reduce with time.

n=c(5,5,5)

library(popdemo)
library(popbio)
truelambda(Sp1matU)
##           [,1] [,2]
## [1,] 0.9999999    1
## [2,] 0.9999999    1
## [3,] 0.9999999    1
pop.projection(Sp1matU, n=n)$pop.changes
##  [1] 0.7333333 0.8909091 0.9632653 0.9885593 0.9965281 0.9989548 0.9996861
##  [8] 0.9999058 0.9999717 0.9999915 0.9999975 0.9999992 0.9999998 0.9999999
## [15] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000

Assume a small change in mortality

Note that in this new model although surviviroship is very close to zero (0.995), and consequently population decline in every time period (even if only by a small fraction) is possible.

Sp1matU_2 <- rbind(
  c(0.0, 0.0, 0.0),
  c(0.5, 0.3, 0.0),
  c(0.0, 0.4, 0.995)
) # transition matrix

Sp1matF <- rbind(
  c(0.0, 0.0, 1.0),
  c(0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0)
) # fertility matrix

Sp1matA_2=Sp1matU_2+Sp1matF

pop.projection(Sp1matU_2, n=n)$pop.changes
##  [1] 0.7316667 0.8874829 0.9586555 0.9836264 0.9915311 0.9939504 0.9946832
##  [8] 0.9949045 0.9949712 0.9949913 0.9949974 0.9949992 0.9949998 0.9949999
## [15] 0.9950000 0.9950000 0.9950000 0.9950000 0.9950000

Irreducibility: No Transitions between stages

In the present scenario, juveniles do not grow to become adults, all juveniles either remain juveniles or die. Note the life cycle figure where no arrows connect juveniles to adults.

library(DiagrammeR)

Sp1matU_NT <- rbind(
  c(0.0, 0.0, 0.0),
  c(0.5, 0.7, 0.0),
  c(0.0, 0.0, 0.995)
) # transition matrix

Sp1matF <- rbind(
  c(0.0, 0.0, 1.0),
  c(0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0)
) # fertility matrix

Sp1matA_NT = Sp1matU_NT+Sp1matF # TF matrix
library(Rage)
stages <- c("plantula", "juvenil", "adulto")

plot_life_cycle(Sp1matU_NT, stages=stages, fontsize = 0)

As shown by Caswell (2000) and more recently explored by Stott et al. (2010) matrices need to be irreducible. The concept of irreducibility is associated with the life cycle of the species and the matrix includes the transitions from all stages to all other stages. The above life cycle figure is missing two important components in the life history of the species, no juveniles grow to become adults and none of the adults produce seedlings (seeds that grow to seedlings).

An easy way of determining if the matrix is irreducible is to read the follwowing script isIrreducible in the package (popdemo). Note that is this case the result is False for the above matrix.

isIrreducible(Sp1matU_NT) # for the transiiton matrix, missing a transition stage and fertility
## [1] FALSE
isIrreducible(Sp1matA_NT) # for the TF matrix, missing a transition stage
## [1] FALSE
# Now considering Sp1matA_2

isIrreducible(Sp1matA_2) # includes all transitions and fertility
## [1] TRUE

No survivorship

Complete mortality of one or more stages. It is often observed that survivorship of smaller individuals or the first stage of the life cycle of a species is highly risky, where the likelihood of survbivorship is very low. For example, most seeds do not survive to germinate. This is likely the norm in orchids where seed production is very high (sometimes millions seeds in one seed capsule, i.e Catasetum; ref), but few are shown to germinate (ref). However this is not limited to orchids, in trees the same pattern may be observed, for example in Nothofagus pumilio seedling recruitment was less than 1.5% Torres et al. (2015). NEED EXAMPLE OF NO SEED OR SEEDLING RECRUITMENTS.

As it is well known that seed germination in orchids is less than straightforward and many variables may influence seed germination Rasmussen et al. (2015). …….

In the present life cycle graph, none of the seedling survive or growth to the next stage. Note the first column in the transition matrix all values are zero. The population may have started with many (even thousands) of seedling, but none grew to become a juvenile or remained as seedlings. This results in a matrix that is reducible isIrreducible = FALSE and consequently does not comply with the requirements needed.

library(DiagrammeR)

Sp1matU_NS <- rbind(
  c(0.0, 0.0, 0.0),
  c(0.0, 0.7, 0.0),
  c(0.0, 0.25, 0.995)
) # transition matrix

Sp1matF <- rbind(
  c(0.0, 0.0, 1.0),
  c(0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0)
) # fertility matrix

Sp1matA_NS = Sp1matU_NS+Sp1matF # TF matrix
library(Rage)
stages <- c("plantula", "juvenil", "adulto")

plot_life_cycle(Sp1matU_NS, stages=stages, fontsize = 0)
isIrreducible(Sp1matU_NS)
## [1] FALSE

Excessive rounding of values

One of the simplest error in the construction of the matrix elements is the excessive rounding error or other estimates which results in values of survivorhip larger than 1.00, resulting sometimes in survivorship that are even above 100%

For example in an analysis of Serapia cordigera Pellegrino and Bellusci (2014). Here the authors evaluated the transitions between dormancy, seedlings, vegetative rosette and flowering. Here we show one of these matrices from the supplementary material. Time period 2001-2002, A1.

library(DiagrammeR)

SerapiaU <- rbind(
  c(0.668, 0.122, 0.294, 0.401),
  c(0.128, 0.0, 0.0, 0.0),
  c(0.0, 0.302, 0.453, 0.366),
  c(0.214, 0.364, 0.185, 0.207)
) # transition matrix

SerapiaF <- rbind(
  c(0.0, 0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0, 0.0)
) # fertility matrix

SerapiaA = SerapiaU+SerapiaF # TF matrix
library(Rage)
stages <- c("dormancy", "seedling", "vegetative", "adult")

plot_life_cycle(SerapiaA, stages=stages)
# Note that the sum of survivoship for the dormant stage is larger than 1, Equalling 1.01

Fertility estimates and life cycle

The importance of considering how fertility included in the life cycle is extremely important, and if erroneously considered may result in results and interpretation that are non-sensicle. We would show a few example of how these can be included in the life cycle and matrix and result in cause problems.

Incorrect life cycle and fertility stage

Assume you have a species where you model the life cycle as seedling, juvenile and adult. Fertility is measured as the number of seeds produced by an adult (mean number of seeds per adult). After collecting the data calculations it is determined that the mean number of seeds per adult is 11000. If we add this the transition and fertility matrix belowand evaluate the lambda and graph the population growth with the function project we have a lambda of 4.93 and after only 5 time periods the number of adults are above 250,000. Consequently the population growth rate estimeste would be incorrect and misleading.

The error is that the value in the fertility matrix should correspond to the first stage of the matrix, in this case the seedling stage. Thus the top right corner of the fertility matrix should not be the mean number of seeds per plant, but the mean number of seedlings produced by a an adult plant.

library(DiagrammeR)

Sp1matU_Fert <- rbind(
  c(0.0, 0.0, 0.0),
  c(0.3, 0.7, 0.0),
  c(0.0, 0.25, 0.995)
) # transition matrix

Sp1matF <- rbind(
  c(0.0, 0.0, 1100.0),
  c(0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0)
) # fertility matrix

Sp1matA_Fert = Sp1matU_Fert+Sp1matF # TF matrix
library(Rage)
stages <- c("plantula", "juvenil", "adulto")

lambda(Sp1matA_Fert)
## [1] 4.937718
# show change in population size
n
## [1] 5 5 5
pr <- project(Sp1matA_Fert, vector="n", time=5)
plot(pr) # Note that even after just 5 time periods, the number of adults is larger than 250,000 individuals

If we wish to add a seed stage than we have to include the stage in our model and matrix with a new stage the seed stage, and have an estimate of the number of seeds that germinate and become seddlings. In the case of orchids, this likely to be a difficult estimate to attain because orchids seeds are difficult to follow in nature unless either the seed packet method developped by. or some genetic fingerprinting method was used to determine the provenance of the seeds.

library(DiagrammeR)

Sp1matU_Fert2 <- rbind(
  c(0.0, 0.0, 0.0, 0.0),
  c(0.0001, 0.0, 0.0, 0.0),
  c(0.0, 0.3, 0.7, 0.0),
  c(0.0, 0.0, 0.25, 0.995)
) # transition matrix

Sp1matF2 <- rbind(
  c(0.0, 0.0, 0.0, 1100.0),
  c(0.0, 0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0, 0.0),
  c(0.0, 0.0, 0.0, 0.0)
) # fertility matrix

Sp1matA_Fert2 = Sp1matU_Fert2+Sp1matF2 # TF matrix
library(Rage)
stages <- c("semillas", "plantula", "juvenil", "adulto")

plot_life_cycle(Sp1matA_Fert2, stages=stages)
lambda(Sp1matA_Fert2)
## [1] 1.019805
# show change in population size
pr <- project(Sp1matA_Fert2, vector="n", time=5)
plot(pr) # Note that now the number of adults did not increase to the level of the previous model

In the above example we have not included a seed dormancy stage. In many plant species, seeds can be dormant for one or more years. It is not known if seeds in orchids are dormant for a long time Gale et al. (2010) except for a few species which have shown that seeds are still alive after mutliple years in the soil using tetrazolium stain test Rasmussen and Whigham (1993) and Whigham et al. (2006).


Data Analysis issues

Incorrect confidence intervals estimates

Estimates of dispersion in the survival, transition, death and fertility are matrix parameter are useful in multiple ways. The most basic approach is understanding the uncertainty in the parameter as a function of the sample size, parameters with large dispersion should be viewed with caution. The disperison parameters maybe useful for simulations and understanding the uncertainty in the population parameters such as lambda and the probability of persistence and extinction.

The parameter of survival, death, stasis and transitions are NOT normally distributed as the values range from zero to 1. No value can be smaller than zero or larger than one, including the 95% confidence intervals (bounded by 0 and 1). If the gaussian (normal) distribution it is likely that the 95% CI will be outof bound. Let us assume we wish to calculate the probability of survivorship of one stage and its 95% confidence intervals.

We surveyed 25 individuals were 20 survived

  • Construct a 95% confidence interval of the proportion of individuals that died

Where the proportion that died is \(\hat{p}\) and the number that died is \(n_d\) and \(n\) is the sample size

\[\hat{p}=\frac{n_d}{n}\] with a probability of death of 20%.

p=5/25
p
## [1] 0.2

The 95% CI of a proportion is calculated

\[ \hat{p}\pm Z_{0.05}*\sqrt{}(\frac{\hat{p}(1-\hat{p})}{n})\] - Z_{0.05} is the Z critical value for a 95% CI = 1.955

n=25
HCI=p+1.96*sqrt((p*(1-p))/n) #High CI
HCI
## [1] 0.3568
LCI=p-1.96*sqrt((p*(1-p))/n) #Low CI
LCI
## [1] 0.0432

An easier method is using the R function propCI form the library(interceptCI)

library(interpretCI)

result=propCI(n=25, p=0.2, alpha=0.05)

result
## $data
## # A tibble: 1 × 1
##   value
##   <lgl>
## 1 NA   
## 
## $result
##   alpha  n df   p P   se critical        ME      lower     upper
## 1  0.05 25 24 0.2 0 0.08 1.959964 0.1567971 0.04320288 0.3567971
##                       CI   z     pvalue alternative
## 1 0.20 [95CI 0.04; 0.36] 2.5 0.01241933   two.sided
## 
## $call
## propCI(n = 25, p = 0.2, alpha = 0.05)
## 
## attr(,"measure")
## [1] "prop"

However how do calculate the 95% CI when there are more than 2 proportions? Because the proportion of all stages dependent on the proportion of the other stages, analisis have to consider the proportion and the 95% CI have to include all stages simultaneously. The function required is the multinomial (multi group) dirichlet function.

In the analysis we estimate the 95% confidence intervals of the transition and stasis of seedlings to seedlings (50%), juveniles (20%), adults (0%) and death (30%). Note the life cycle graph which by as usual excludes the probabilty of seedlings dying.

Dirichlet <- rbind(
  c(0.5, 0.0, 0.0),
  c(0.2, 0.0, 0.0),
  c(0.0, 0.3, 0.7)
) # transition matrix

library(Rage)
stages <- c("plantula", "juvenil", "adulto")

plot_life_cycle(Dirichlet, stages=stages)

Dirichlet approach for estimating confidence intervals

To evaluate the 95% CI interval simultaneously of the four transitions we use the library(MCMCpack), which is a package dedicated to performaing Markov Chain Monte Carlo simulations. We will use the function MCmultinomdirichlet. Note that the first list are the proportion as shown in the matrix for the seedling stage c(.50b,.2b,.0b,.3b) multiplied by the sample size b= 25. The second list are the Bayesian priors c(.5,.2,0.0001,.3), in this case I assumed that the sum of the priors are equal to 1. This results in a very low confidence in the prior perception of what the transiiton are. The second assumption is the priors for the transtion observed are equal, however we could have used c(1,1,0,.0001, 1), where this prior suggest an equal transition for all but seedlings growing to becoming an adult.

The concept of the prior cannot be explained throurougly here, see the following references for more in depth information.

The results in the figure show that there is lots of dispersion around the mean proportion of the statis and transition as expected because of the small sample size. To convince yourself change the value of b to a large number and see how the distibution changes

library(MCMCpack)
b=25
L=posteriorPRIORL <- MCmultinomdirichlet(c(.50*b,.2*b,.0*b,.3*b), c(.5,.2,0.0001,.3), mc=10000)
dfL=as.data.frame(L)
t(summary(dfL))
##                                                                      
##      pi.1 Min.   :0.1843      1st Qu.:0.4345      Median :0.5005     
##      pi.2 Min.   :0.01764     1st Qu.:0.14287     Median :0.19291    
##      pi.3 Min.   :0.000e+00   1st Qu.:0.000e+00   Median :0.000e+00  
##      pi.4 Min.   :0.02617     1st Qu.:0.23734     Median :0.29527    
##                                                                      
##      pi.1 Mean   :0.4999      3rd Qu.:0.5645      Max.   :0.8327     
##      pi.2 Mean   :0.20016     3rd Qu.:0.24910     Max.   :0.62632    
##      pi.3 Mean   :2.417e-06   3rd Qu.:0.000e+00   Max.   :2.130e-02  
##      pi.4 Mean   :0.29989     3rd Qu.:0.35659     Max.   :0.64279
#head(dfL)
stack_dfL=stack(dfL)
comb_dfbL= cbind(stack_dfL, T="25")

All_Data3=comb_dfbL
levels(All_Data3$ind)[levels(All_Data3$ind)=="pi.1"]="Seedling"
levels(All_Data3$ind)[levels(All_Data3$ind)=="pi.2"]="Juvenil"
levels(All_Data3$ind)[levels(All_Data3$ind)=="pi.3"]="Adult"
levels(All_Data3$ind)[levels(All_Data3$ind)=="pi.4"]="Dead"

library(ggplot2)
ggplot(data=All_Data3, aes(x=values, fill=ind, colour=ind))+
  geom_density(aes(alpha=.5)) +
  scale_y_continuous(limit=c(0, 5.5))+
  scale_colour_hue(l=60)+
  facet_grid(~ind)

Now let us calculate the 95% CI of the transitions

  • Confidence intervals of transitions, stasis and survivorship based on on simulation and Dirichlet distribution.

Important aspects to note.

  • the 95% CI are bounded between 0 and 1. Values below zero or above one in parameters wouuld be non-sensicle.
  • the sum of the mean is equal to 1.
  • the sum of the median is equal to 1.
  • the shape of the distribution is NOT normally distributed, see previous figure. The shape of the distibution is called a beta distribution.
library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
## 
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
## The following object is masked from 'package:purrr':
## 
##     compact
library(reshape2)
## 
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
## 
##     smiths
Transitions=ddply(All_Data3, c("ind"), summarise,
            mean = round(mean(values),3), sd = round(sd(values),4),
            median= median(values),
            #sem = round(sd(values)/sqrt(length(values)),6),
            CI5 = quantile(values, probs = c(0.05)),
            CI95 = round(quantile(values, probs = c(0.95)), 4),
            min=min(values),
            max=max(values)
            )

Transitions
##        ind mean     sd    median       CI5   CI95        min        max
## 1 Seedling  0.5 0.0963 0.5005304 0.3417736 0.6579 0.18433471 0.83267835
## 2  Juvenil  0.2 0.0774 0.1929084 0.0862412 0.3390 0.01764326 0.62632473
## 3    Adult  0.0 0.0002 0.0000000 0.0000000 0.0000 0.00000000 0.02129693
## 4     Dead  0.3 0.0867 0.2952673 0.1652225 0.4505 0.02616876 0.64278594

Diferentes_componentes_de_Ciclo_de_vida

Por: Anne, Fabiola, Aucencia: ECOSUR

El capitulo sera movido a otra posicion en el libro

titulo: “diferentes_componentes_de_Ciclo_de_vida”

Hojas de datos en el campo

Por: RLT, Nhora, Demetria, Anne….

La hoja de recoleccion de datos deberia estar preparada antes de ir al campo y estar sobre papel que es impermeable y escribir con lapiz. Ese ultimo punto es bien importante ya que la gran mayoria de los boligrafos son soluble en agua y si el papel se moja ud puede perder sus daos. RECUERDA que no se puede regresar en el tiempo y recoger los datos. Si Ud tiene su hoja de datos en el laboratorio y se le cae la taza cafe y fue escrito con boligrafo se puede perder los datos. No se arriega.

es importante tener la lista completa de todos los individuos en la hoja de datos, ya que esto le ayuda asegurarse durante el muestreo que no se le olvida ningun individuo. Datos olvidado no se puede recuperar

Hoja en blanco para llevarse

library(tidyverse)
library(gt)
Hoja_de_campo = tribble(
  ~Número_de_Ind, ~Etapa, ~Cantidad_flores_abierta, ~Cantidad_capullo, ~ Cantidad_Frutos, ~Numero_Hojas, ~Ancho_hoja_mm, ~etc,
  23001,"...","...","...","...","...","...","...",
  23002,"...","...","...","...","...","...","...",
  23003,"...","...","...","...","...","...","...",
  23004,"...","...","...","...","...","...","...",
  23005,"...","...","...","...","...","...","...",
  24006,"...","...","...","...","...","...","...",
  24007,"...","...","...","...","...","...","...",
  24008,"...","...","...","...","...","...","...",
  
)

Hoja_de_campo %>% gt()
Número_de_Ind Etapa Cantidad_flores_abierta Cantidad_capullo Cantidad_Frutos Numero_Hojas Ancho_hoja_mm etc
23001 ... ... ... ... ... ... ...
23002 ... ... ... ... ... ... ...
23003 ... ... ... ... ... ... ...
23004 ... ... ... ... ... ... ...
23005 ... ... ... ... ... ... ...
24006 ... ... ... ... ... ... ...
24007 ... ... ... ... ... ... ...
24008 ... ... ... ... ... ... ...

Usando ejemplo de Tremblay [] y su codificación

  • p == plantula.
  • j == juvenil
  • A0 == adulto non-reproductivo
  • A1 == adulto reproductivo
  • M = muerto

Hoja llena al final del muestreo

library(tidyverse)
library(gt)
Hoja_llena = tribble(
  ~Número_de_Ind, ~Etapa, ~Cantidad_flores_abierta, ~Cantidad_capullo, ~ Cantidad_Frutos, ~Numero_Hojas, ~Ancho_hoja_mm, ~etc,
  23001,"p",NA, NA,NA,NA,NA,NA,
  23002,"j",NA, NA,NA,2,10,NA,
  23003,"A1",5, 10,1, 5,32,NA,
  23004,"Ao",0, 0,0,2,14,NA,
  23005,"m",NA, NA,NA,NA,NA,NA,
  24006,"p",NA, NA,NA,NA,NA,NA,
  24007,"j",NA, NA,NA,1,7,NA,
  24008,"p",NA, NA,NA,NA,NA,NA,
  
)

Hoja_llena %>% gt()
Número_de_Ind Etapa Cantidad_flores_abierta Cantidad_capullo Cantidad_Frutos Numero_Hojas Ancho_hoja_mm etc
23001 p NA NA NA NA NA NA
23002 j NA NA NA 2 10 NA
23003 A1 5 10 1 5 32 NA
23004 Ao 0 0 0 2 14 NA
23005 m NA NA NA NA NA NA
24006 p NA NA NA NA NA NA
24007 j NA NA NA 1 7 NA
24008 p NA NA NA NA NA NA

Nota que solamente los individuos 23003 y 23004 son adultos, uno tiene flores, capullos y frutos y el otro nada. A todos los adultos hay que llenar la informacion, no dejarlo en blanco. Para las otras etapas, no es necesario llenar la mayoria de las columnas ya que para las plantulas y muertos no PUEDEN tener esas, pero los juveniles, se puede llenar la cantidad de hojas y sus tamaño. Nota que el individuo 23005 se murio.

Esa misma estructura de recoger los dados puede ser utilizado para ponerlo en una hoja de MSExcel, Google Sheet o MacOS Numbers.

Nombre del capitulo.

All chapters start with a first-level heading followed by your chapter title, like the line above. There should be only one first-level heading (#) per .Rmd file.

A section

Otra seccion

All chapter sections start with a second-level (##) or higher heading followed by your section title, like the sections above and below here. You can have as many as you want within a chapter.

A subsection

The subtopic

More subdivision

Even more subdivision

An unnumbered section

Chapters and sections are numbered by default. To un-number a heading, add a {.unnumbered} or the shorter {-} at the end of the heading, like in this section.

Remember not to use only 1 # as this indicates a new chapter

NOTE the size of font changes with the number #

NOTE the size of font changes with the number #

NOTE the size of font changes with the number #

NOTE the size of font changes with the number #

Don’t miss Table @ref(tab:nice-table).

Cross-references

Cross-references make it easier for your readers to find and link to elements in your book.

Chapters and sub-chapters

There are two steps to cross-reference any heading:

  1. Label the heading: # Hello world {#nice-label}.

    • Leave the label off if you like the automated heading generated based on your heading title: for example, # Hello world = # Hello world {#hello-world}.

    • To label an un-numbered heading, use: # Hello world {-#nice-label} or {# Hello world .unnumbered}.

  2. Next, reference the labeled heading anywhere in the text using \@ref(nice-label); for example, please see Chapter @ref(intro).


Captioned figures and tables

Figures and tables with captions can also be cross-referenced from elsewhere in your book using \@ref(fig:chunk-label) and \@ref(tab:chunk-label), respectively.

See Figure @ref(fig:nice-fig).

par(mar = c(4, 4, .1, .1))
plot(pressure, type = 'b', pch = 19)
Here is a nice figure!

Here is a nice figure!

Don’t miss Table @ref(tab:nice-table).

knitr::kable(
  head(pressure, 10), caption = 'Here is a nice table!',
  booktabs = TRUE
)
Here is a nice table!
temperature pressure
0 0.0002
20 0.0012
40 0.0060
60 0.0300
80 0.0900
100 0.2700
120 0.7500
140 1.8500
160 4.2000
180 8.8000

(Appendix) List of epiphyitc species

You can add parts to organize one or more book chapters together. Parts can be inserted at the top of an .Rmd file, before the first-level chapter heading in that same file.

Add a numbered part: # (PART) Act one {-} (followed by # A chapter)

Add an unnumbered part: # (PART\*) Act two {-} (followed by # A chapter)

Add an appendix as a special kind of un-numbered part: # (APPENDIX) Other stuff {-} (followed by # A chapter). Chapters in an appendix are prepended with letters instead of numbers.

(Appendix) List of terrestrial species

Footnotes and citations

Footnotes

Footnotes are put inside the square brackets after a caret ^[]. Like this one 1.

Let’s add a second footnote. In this case we add information on the origin of matrix algebra 2

Mi tercer footnote es filosofico 3

Citations

Reference items in your bibliography file(s) using @key.

For example, we are using the bookdown package (Xie 2023) (check out the last code chunk in index.Rmd to see how this citation key was added) in this sample book, which was built on top of R Markdown and knitr (Xie 2015) (this citation was added manually in an external file book.bib). Note that the .bib files need to be listed in the index.Rmd with the YAML bibliography key.

Here is second citation.

Evolutionary processes in orchids are likely to be a interaction between natural selection and genetic drift (Tremblay et al. 2005).

Here is a third citation

un articulo de Damon excepcional (Damon 2000)

Blocks

Equations

Here is an equation.

\[\begin{equation} f\left(k\right) = \binom{n}{k} p^k\left(1-p\right)^{n-k} (\#eq:binom) \end{equation}\]

You may refer to using \@ref(eq:binom), like see Equation @ref(eq:binom).

– this is the script to make the equation connectable in the text

** that the .... are to make the text visual

Theorems and proofs

Labeled theorems can be referenced in text using \@ref(thm:tri), for example, check out this smart theorem @ref(thm:tri).

::: {.theorem #tri} For a right triangle, if \(c\) denotes the length of the hypotenuse and \(a\) and \(b\) denote the lengths of the other two sides, we have \[a^2 + b^2 = c^2\]

A site to help create your equations \[\bar{x}=\frac{\sum x_{i}}{n}\]

https://latex.codecogs.com/eqneditor/editor.php

Ahora se enseña la formula del promedio @ref(thm:promedio)

\[\bar{x}= \frac{\sum x_{i}}{n}\]

Si quiere la ecuación en la linea usa solamente un “$” antes y despues de la formula. El promedio tiene la siguiente formula \(\bar{x}= \frac{\sum x_{i}}{n}\) y la varianza se estima tomando la diferencia entre los valores y el promedio.

Read more here https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html.


Callout blocks

The R Markdown Cookbook provides more help on how to use custom blocks to design your own callouts: https://bookdown.org/yihui/rmarkdown-cookbook/custom-blocks.html

Sharing your book

Publishing

HTML books can be published online, see: https://bookdown.org/yihui/bookdown/publishing.html

404 pages

By default, users will be directed to a 404 page if they try to access a webpage that cannot be found. If you’d like to customize your 404 page instead of using the default, you may add either a _404.Rmd or _404.md file to your project root and use code and/or Markdown syntax.

Metadata for sharing

Bookdown HTML books will provide HTML metadata for social sharing on platforms like Twitter, Facebook, and LinkedIn, using information you provide in the index.Rmd YAML. To setup, set the url for your book and the path to your cover-image file. Your book’s title and description are also used.

This gitbook uses the same social sharing data across all chapters in your book- all links shared will look the same.

Specify your book’s source repository on GitHub using the edit key under the configuration options in the _output.yml file, which allows users to suggest an edit by linking to a chapter’s source file.

Read more about the features of this output format here:

https://pkgs.rstudio.com/bookdown/reference/gitbook.html

Or use:

?bookdown::gitbook

References

Taller de Dinamica Poblacional

Esta sección tiene objetivo de presentar una sinopsis de un taller de 3 dias sobre el uso de matrices para el estudio de Dinámica poblacional.

Lugar: Universidad Nacional de San Antonio Abad del Cusco, Perú Fecha del taller: 24-26 Noviembre 2023

Impartido por:

Dr. Raymond L. Tremblay:

Universidad de Puerto Rico Presidente de Analítica Fundación, Inc

e-mail:

Dra. Nhora Helena Ospina-Calderón:

Pontificia Universidad Javeriana Seccional Cali Profesora-investigadora

e-mail:

Duración del taller:

Tres días con 26 horas totales de Taller-teórico practico con una experiencia de recolección de datos en el campo (8 horas) y dos días de taller–teórico practico y análisis de datos (14 horas). Instrucción en español.

Certificación A nombre de la

  • Universidad Nacional San Antonio Abad del Cusco (UNSAAC)

  • ANALITICA Fundación Inc. (Puerto Rico)

Costo del taller Estudiantes:

S/. xxx.00 nuevos soles ($ 100.00 dol.) locales.

Profesionales: S/. xxx.00 nuevos soles ($200.00 dol.) Estudiantes internacional y profesionales

Cupo: 25 personas

Introducción

Este taller teórico-práctico se ofrece a los estudiantes interesados en orquídeas y a las personas interesadas en la conservación de plantas. Los métodos se enfocarán en el uso de las matrices de Lefkovitch para construir modelos de historia de vida que sirven a su vez para evaluar si una población de una especie es estable, está creciendo o se está reduciendo. Para evaluar el crecimiento de las poblaciones se utiliza el método de marcar y recapturar (monitorear) individuos en el campo, dicho método se aplicará para hacer Matrices de Proyección de Poblaciones (MPP). Se dará énfasis en el manejo para el almacenamiento y sistematización de datos. Los datos recolectados en el campo serán utilizados para construir una base de datos que almacene las evidencias recogidas en el campo y funcione como insumo para calcular las matrices de transiciones. Posterior a la construcción de matrices de transición se analizará las tasas de crecimiento (crecimiento poblacional intrínseco), estimando los errores y los intervalos de confianza con distribución beta para cada una de las transiciones. También se llevará a cabo análisis de elasticidad y la proyección del tamaño de la población. Todos los análisis serán preparados y llevados a cabo en R, Rstudio y RMarkdown (todos programas de distribución libre).

Objetivo general:

Introducir las bases teóricas y prácticas para la recolección de datos de campo que permiten determinar la probabilidad de extinción de una población.

Objetivos específicos:

• Conocer las bases teóricas y los métodos modernos de recolección de datos en el campo para determinar la probabilidad de extinción de una población.


• Conocer los datos básicos y su correcta manipulación para determinar la viabilidad de una población.

• Manipular correctamente los archivos electrónicos de datos de campo para proponer la estructura de la población y su posterior depuración para análisis sobre diferentes formatos.

• Aprender nociones básicas de Excel, R y RStudio para editar y analizar conjuntos de datos para el uso con análisis de MPP.

• Construir un gráfico de ciclo de vida para la especie estudiada.

• Construir modelos demográficos que permitan predecir la dinámica poblacional en el tiempo y generar insumos importantes para el manejo y la conservación

• Estimar los intervalos de confianza de los parámetros del ciclo de vida de la población.

• Utilizar la información y análisis demográfico para el diagnóstico y predicciones de la viabilidad de las poblaciones.

• Modelar el tamaño poblacional de la población de estudio para determinar su posible riesgo de extinción

Introducción

23 noviembre- Llegada a Cusco

  • 8:00 pm- 9:15pm

    • Introducción al taller y Presentación de conceptos básicos (Capítulo 2; Tremblay)
    • Diagrama del ciclo de vida (Capítulo 3; Ospina)
    • Preparación del viaje de campo

24 noviembre: Viaje de campo

  • Salida 6:00 am - Llegada 8:15 am.

    • Llegada al sitio de muestreo campo
  • 8:30am- 5:00pm.

    • Determinación de la especie a estudiar (Ospina y Tremblay)

    • Métodos de recolección de datos (Capítulo 4 y 22; Ospina y Tremblay)

    • Recolección de datos

25 noviembre:

8:30 pm-10:30 pm

  • Teoria: - Proponer un ciclo de vida (Capítulo 3) - Quien se reproduce y como calcular la fecundidad (Capitulo 6) - Como se ama la matriz (3 x 3) y ejercicio (Capítulo 5)
    • Subir la matriz a mano
      • Multiplicación del vector (N en el tiempo t) con la matriz = Nt+1

10:30am – 12:00pm

  • Introducción a la teoria de MPP - crecimiento asimtotico (Capítulo 9) - elasticidad (Capitulo 10) - estructura estable (Capitulo Nuevo) - valor reproductivo (Capitulo Nuevo)

Almuerzo 12:00- 1:00pm

1:00pm - 2:30 pm

  • Organización de los datos en Excel/Numbers/Sheet, estructura de la población (Capítulo 4 y 22; Ospina y Tremblay)

2:30pm – 5:30pm

  • Introducción a R, RStudio y RMarkdown y paquetes de análisis. (Tremblay)

  • Subir los datos a RStudio, análisis preliminar de los datos usando popdemo y raretrans (Ospina y Tremblay)

    • Métodos para calcular contruir la matriz (Capítulo 8, Tremblay)
    • Incluir la fecundidad (Capítulo 6)
    • Matriz bayesiana a priori (Capítulo 8, Tremblay)
    • Calcular los indices de Oquídea cuscanensis
      • crecimiento asintótico (Capítulo 9)
      • elasticidad (Capítulo 10)
      • estructura estable (Capítulo Nuevo)
      • valor reproductivo (Capítulo Nuevo)

26 noviembre:

8:30 pm-10:30 pm

  • - Descripción histórica del uso y aplicaciones de MPP (Capítulo 2, 16: Tremblay)

10:30am – 12:00pm

  • Dinamica transitoria transfer function (Capítulo 12; Ospina)

  • Dinámica, análisis de viabilidad poblacional: el futuro de la especie (Capítulo 9: Tremblay)

Almuerzo 12:00- 1:00pm

1:00pm – 4:30pm

  • Estudio de casos, asignaciones de tarea.
    • Caladenia xxx, Terrestre con latencia
    • Dracula chimaera, Epífita y Terrestre
    • Dendrophylax lindenii, Epífita áfila

4:30pm – 5:30pm

  • Presentaciones de trabajo (20 minutos por grupo, 10 minutos de preguntas)

Materiales necesarios:

  1. Computadora portátil (Mac o PC) con Excel, R y Rstudio
  • Los participantes pueden trabajar en parejas en caso de que sea difícil conseguir una computadora portatil.
  • Es necesario acudir a las sesiones teórica/práctica con los programas y paquetes previamente instalados, se enviará instrucciones y brindará oportuna asesoría.
  • La instalación de los programados se harán una semana antes del taller, en una conferencia por ZOOM.

Bibliografía

Gascoigne Samuel J. L., Simon Rolph, Daisy Sankey, Nagalakshmi Nidadavolu, Adrian S. Stell Pičman, Christina M. Hernández, Matthew Philpott, Aiyla Salam, Connor Bernard, Erola Fenollosa, Jessie McLean, Shathuki Hetti Achchige Perera, Oliver G. Spacey, Maja Kajin, Anna C. Vinton, C. Ruth Archer, Jean H. Burns, Danielle L. Buss, Hal Caswell, Judy P. Che-Castaldo, Dylan Z. Childs, Pol Capdevila, Aldo Compagnoni, Elizabeth Crone, Thomas H. G. Ezard, Dave Hodgson, Owen Jones, Eelke Jongejans Jenni McDonald, Brigitte Tenhumberg, Chelsea C. Thomas, Andrew J. Tyre, Satu Ramula, Iain Stott, Raymond L. Tremblay, Phil Wilson, James W. Vaupel, and Roberto Salguero-Gómez.. 2023. A standard protocol to report discrete stage-structured demographic information. Submitted to Methods in Ecology and Evolution. In press.

Stott, I., Hodgson, D. J., & Townley, S. (2012). Beyond sensitivity: nonlinear perturbation analysis of transient dynamics. Methods in Ecology and Evolution. 3(4), 673-684. doi: 10.1111/j.2041-210X.2012.00199.x

Stott, I., Hodgson, D. J., & Townley, S. (2012b). Popdemo: An R package for population demography using projection matrix analysis. Methods in Ecology and Evolution, 3(5), 797-802. https://doi.org/10.1111/j.2041-210X.2012.00222.x

Stott, I., Townley, S., & Hodgson, D. J. (2011). A framework for studying transient dynamics of population projection matrix models. Ecology Letters, 14(9), 959-970. doi: 10.1111/j.1461-0248.2011.01659.x

Tremblay, R. L., & Hutchings, M. J. (2002). Population dynamics in orchid conservation: a review of analytical methods based on the rare species Lepanthes eltoroensis. Orchid conservation. Kota Kinabalu: Natural History Publications (Borneo), 183-204.

Tremblay, R. L., Raventos, J., & Ackerman, J. D. (2015). When stable-stage equilibrium is unlikely: integrating transient population dynamics improves asymptotic methods. Annals of Botany, 116(3), 381-390. doi:10.1093/aob/mcv031

Tremblay, R. L., Tyre, A. J., Pérez, M. E., & Ackerman, J. D. (2021). Population projections from holey matrices: Using prior information to estimate rare transition events. Ecological Modelling, 447, 109526. https://doi.org/10.1016/j.ecolmodel.2021.109526.

Que conocemos de estas especies?

Especies reportadas de en el sitio de muestreo (día uno)

  • Cyrtochilum cimiciferum (Rchb.f.) Dalström (Tiene una gran población)

  • Cyrtochilum myanthum (Lindl.) Kraenzl.1917

  • Epidendrum chalmersii Hágsater & Ric. Fernández 2013 (endémico de la región Cusco)

  • Epidendrum syringothyrsus Rchb.f. ex Hook.f. 1875

  • Pleurothallis casapensis Lindl. 1842

  • Habenaria sp.

  • Cyclopogon sp.

Aide, T Mitchell, Matthew L Clark, H Ricardo Grau, David López-Carr, Marc A Levy, Daniel Redo, Martha Bonilla-Moheno, George Riner, Marı́a J Andrade-Núñez, and Marı́a Muñiz. 2013. “Deforestation and Reforestation of l Atin a Merica and the c Aribbean (2001–2010).” Biotropica 45 (2): 262–71.
Caswell, Hal. 2000. Matrix Population Models. Vol. 1. Sinauer Sunderland, MA.
Cook, Robert E. 1983. “Clonal Plant Populations: A Knowledge of Clonal Structure Can Affect the Interpretation of Data in a Broad Range of Ecological and Evolutionary Studies.” American Scientist 71 (3): 244–53.
Crouse, Deborah T, Larry B Crowder, and Hal Caswell. 1987. “A Stage-Based Population Model for Loggerhead Sea Turtles and Implications for Conservation.” Ecology 68 (5): 1412–23.
Crowder, Larry B, Deborah T Crouse, Selina S Heppell, and Thomas H Martin. 1994. “Predicting the Impact of Turtle Excluder Devices on Loggerhead Sea Turtle Populations.” Ecological Applications 4 (3): 437–45.
Damon, Anne. 2000. “A Review of the Biology and Control of the Coffee Berry Borer, Hypothenemus Hampei (Coleoptera: Scolytidae).” Bulletin of Entomological Research 90 (6): 453–65.
Gale, Stephan W, Jun Yamazaki, Michael J Hutchings, Tomohisa Yukawa, and Kazumitsu Miyoshi. 2010. “Constraints on Establishment in an Endangered Terrestrial Orchid: A Comparative Study of in Vitro and in Situ Seed Germinability and Seedling Development in Nervilia Nipponica.” Botanical Journal of the Linnean Society 163 (2): 166–80.
Harris, Grant M, Matthew J Butler, David R Stewart, and James W Cain III. 2022. “The Abundance and Persistence of Caprinae Populations.” Scientific Reports 12 (1): 13807.
McGraw, James B, and Hal Caswell. 1996. “Estimation of Individual Fitness from Life-History Data.” The American Naturalist 147 (1): 47–64.
Nunney, Leonard, and Kathleen A Campbell. 1993. “Assessing Minimum Viable Population Size: Demography Meets Population Genetics.” Trends in Ecology & Evolution 8 (7): 234–39.
Parés-Ramos, Isabel K, William A Gould, and T Mitchell Aide. 2008. “Agricultural Abandonment, Suburban Growth, and Forest Expansion in Puerto Rico Between 1991 and 2000.” Ecology and Society 13 (2).
Pellegrino, Giuseppe, and Francesca Bellusci. 2014. “Effects of Human Disturbance on Reproductive Success and Population Viability of Serapias Cordigera (Orchidaceae).” Botanical Journal of the Linnean Society 176 (3): 408–20.
Rasmussen, Hanne N, Kingsley W Dixon, Jana Jersáková, and Tamara Těšitelová. 2015. “Germination and Seedling Establishment in Orchids: A Complex of Requirements.” Annals of Botany 116 (3): 391–402.
Rasmussen, Hanne N, and Dennis F Whigham. 1993. “Seed Ecology of Dust Seeds in Situ: A New Study Technique and Its Application in Terrestrial Orchids.” American Journal of Botany 80 (12): 1374–78.
Shaffer, Mark L, and Fred B Samson. 1985. “Population Size and Extinction: A Note on Determining Critical Population Sizes.” The American Naturalist 125 (1): 144–52.
Stott, Iain, Stuart Townley, David Carslake, and David J Hodgson. 2010. “On Reducibility and Ergodicity of Population Projection Matrix Models.” Methods in Ecology and Evolution 1 (3): 242–52.
Temple, Stanley A. 1977. “Plant-Animal Mutualism: Coevolution with Dodo Leads to Near Extinction of Plant.” Science 197 (4306): 885–86.
Torres, Ana Delia, Juan Manuel Cellini, Marı́a Vanessa Lencinas, Marcelo Daniel Barrera, Rosina Soler, Ricardo Dı́az Delgado, and Guillermo Martı́nez Pastur. 2015. “Seed Production and Recruitment in Primary and Harvested Nothofagus Pumilio Forests: Influence of Regional Climate and Years After Cuttings.” Forest Systems 24.
Tremblay, Raymond L, James D Ackerman, Jess K Zimmerman, and Ricardo N Calvo. 2005. “Variation in Sexual Reproduction in Orchids and Its Evolutionary Consequences: A Spasmodic Journey to Diversification.” Biological Journal of the Linnean Society 84 (1): 1–54.
Tremblay, Raymond L, Andrew J Tyre, Maria-Eglée Pérez, and James D Ackerman. 2021. “Population Projections from Holey Matrices: Using Prior Information to Estimate Rare Transition Events.” Ecological Modelling 447: 109526.
Whigham, Dennis F, John P O’Neill, Hanne N Rasmussen, Bruce A Caldwell, and Melissa K McCormick. 2006. “Seed Longevity in Terrestrial Orchids–Potential for Persistent in Situ Seed Banks.” Biological Conservation 129 (1): 24–30.
Xie, Yihui. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. http://yihui.org/knitr/.
———. 2023. Bookdown: Authoring Books and Technical Documents with r Markdown. https://CRAN.R-project.org/package=bookdown.

  1. This is a footnote.↩︎

  2. The term matrix was introduced by the 19th-century English mathematician James Sylvester, but it was his friend the mathematician Arthur Cayley who developed the algebraic aspect of matrices in two papers in the 1850s. ↩︎

  3. kgjljgljhggjlhgjhgljgjhl↩︎